From 52f8d3a58b4989541e532f6b9e5dde067f7ff303 Mon Sep 17 00:00:00 2001 From: liza-mae Date: Thu, 2 Jul 2020 13:41:23 -0600 Subject: [PATCH 01/59] Build docker image for elasticsearch snapshot (#70482) * Build docker image for elasticsearch snapshot * Consolidate statements * Update .ci/es-snapshots/Jenkinsfile_build_es Co-authored-by: Brian Seeders * Update find * Use larger worker Co-authored-by: Elastic Machine Co-authored-by: Brian Seeders --- .ci/es-snapshots/Jenkinsfile_build_es | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.ci/es-snapshots/Jenkinsfile_build_es b/.ci/es-snapshots/Jenkinsfile_build_es index a3470cd750738..aafdf06433c6d 100644 --- a/.ci/es-snapshots/Jenkinsfile_build_es +++ b/.ci/es-snapshots/Jenkinsfile_build_es @@ -25,7 +25,7 @@ def PROMOTE_WITHOUT_VERIFY = !!params.PROMOTE_WITHOUT_VERIFICATION timeout(time: 120, unit: 'MINUTES') { timestamps { ansiColor('xterm') { - node(workers.label('s')) { + node(workers.label('l')) { catchErrors { def VERSION def SNAPSHOT_ID @@ -154,9 +154,10 @@ def buildArchives(destination) { "NODE_NAME=", ]) { sh """ - ./gradlew -p distribution/archives assemble --parallel + ./gradlew -Dbuild.docker=true assemble --parallel mkdir -p ${destination} - find distribution/archives -type f \\( -name 'elasticsearch-*-*-*-*.tar.gz' -o -name 'elasticsearch-*-*-*-*.zip' \\) -not -path *no-jdk* -exec cp {} ${destination} \\; + find distribution -type f \\( -name 'elasticsearch-*-*-*-*.tar.gz' -o -name 'elasticsearch-*-*-*-*.zip' \\) -not -path *no-jdk* -not -path *build-context* -exec cp {} ${destination} \\; + docker images "docker.elastic.co/elasticsearch/elasticsearch" --format "{{.Tag}}" | xargs -n1 bash -c 'docker save docker.elastic.co/elasticsearch/elasticsearch:\${0} | gzip > ${destination}/elasticsearch-\${0}-docker-image.tar.gz' """ } } From 5b8fb95d0015ed98877edbbbe7b7b03229d5f497 Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Thu, 2 Jul 2020 21:46:57 +0200 Subject: [PATCH 02/59] Remove the base package from the default packages (#70437) As the base assets will be shipped by ES directly, the base package is not needed anymore. https://github.com/elastic/elasticsearch/pull/57629 In the future we might reintroduce it to update the installed assets. --- x-pack/plugins/ingest_manager/common/types/models/epm.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/ingest_manager/common/types/models/epm.ts b/x-pack/plugins/ingest_manager/common/types/models/epm.ts index bf6a8de15182d..3ee3039e9e1c4 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/epm.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/epm.ts @@ -250,7 +250,6 @@ export enum IngestAssetType { } export enum DefaultPackages { - base = 'base', system = 'system', endpoint = 'endpoint', } From a3e9f39aff523de911a7d6f9eaa2932a6b6077f9 Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Thu, 2 Jul 2020 13:01:18 -0700 Subject: [PATCH 03/59] [Metrics UI] Register function for Observability homepage (#70529) * [Metrics UI] Register function for Observability homepage * Updating types; removing relative path from appLink Co-authored-by: Elastic Machine --- .../metrics_overview_fetchers.test.ts.snap | 215 ++++++++++++ .../public/metrics_overview_fetchers.test.ts | 91 ++++++ .../infra/public/metrics_overview_fetchers.ts | 161 +++++++++ x-pack/plugins/infra/public/plugin.ts | 7 + .../plugins/infra/public/test_utils/index.ts | 309 ++++++++++++++++++ .../typings/fetch_overview_data/index.ts | 1 - 6 files changed, 783 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap create mode 100644 x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts create mode 100644 x-pack/plugins/infra/public/metrics_overview_fetchers.ts create mode 100644 x-pack/plugins/infra/public/test_utils/index.ts diff --git a/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap b/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap new file mode 100644 index 0000000000000..99ab129fc36e3 --- /dev/null +++ b/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap @@ -0,0 +1,215 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Metrics UI Observability Homepage Functions createMetricsFetchData() should just work 1`] = ` +Object { + "appLink": "/app/metrics", + "series": Object { + "inboundTraffic": Object { + "coordinates": Array [ + Object { + "x": 1593630455000, + "y": 0, + }, + Object { + "x": 1593630755000, + "y": 3.5, + }, + Object { + "x": 1593631055000, + "y": 3.5, + }, + Object { + "x": 1593631355000, + "y": 8.5, + }, + Object { + "x": 1593631655000, + "y": 3.5, + }, + Object { + "x": 1593631955000, + "y": 2.5, + }, + Object { + "x": 1593632255000, + "y": 1.5, + }, + Object { + "x": 1593632555000, + "y": 1.5, + }, + Object { + "x": 1593632855000, + "y": 3.5, + }, + Object { + "x": 1593633155000, + "y": 2.5, + }, + Object { + "x": 1593633455000, + "y": 1.5, + }, + Object { + "x": 1593633755000, + "y": 1.5, + }, + Object { + "x": 1593634055000, + "y": 2.5, + }, + Object { + "x": 1593634355000, + "y": 0, + }, + Object { + "x": 1593634655000, + "y": 10.5, + }, + Object { + "x": 1593634955000, + "y": 5.5, + }, + Object { + "x": 1593635255000, + "y": 13.5, + }, + Object { + "x": 1593635555000, + "y": 9.5, + }, + Object { + "x": 1593635855000, + "y": 7.5, + }, + Object { + "x": 1593636155000, + "y": 3, + }, + Object { + "x": 1593636455000, + "y": 3.5, + }, + ], + "label": "Inbound traffic", + }, + "outboundTraffic": Object { + "coordinates": Array [ + Object { + "x": 1593630455000, + "y": 0, + }, + Object { + "x": 1593630755000, + "y": 4, + }, + Object { + "x": 1593631055000, + "y": 4, + }, + Object { + "x": 1593631355000, + "y": 9, + }, + Object { + "x": 1593631655000, + "y": 4, + }, + Object { + "x": 1593631955000, + "y": 2.5, + }, + Object { + "x": 1593632255000, + "y": 2, + }, + Object { + "x": 1593632555000, + "y": 2, + }, + Object { + "x": 1593632855000, + "y": 4, + }, + Object { + "x": 1593633155000, + "y": 3, + }, + Object { + "x": 1593633455000, + "y": 2, + }, + Object { + "x": 1593633755000, + "y": 2, + }, + Object { + "x": 1593634055000, + "y": 2.5, + }, + Object { + "x": 1593634355000, + "y": 1, + }, + Object { + "x": 1593634655000, + "y": 11, + }, + Object { + "x": 1593634955000, + "y": 6, + }, + Object { + "x": 1593635255000, + "y": 14, + }, + Object { + "x": 1593635555000, + "y": 10, + }, + Object { + "x": 1593635855000, + "y": 8, + }, + Object { + "x": 1593636155000, + "y": 3, + }, + Object { + "x": 1593636455000, + "y": 4, + }, + ], + "label": "Outbound traffic", + }, + }, + "stats": Object { + "cpu": Object { + "label": "CPU usage", + "type": "percent", + "value": 0.0015, + }, + "hosts": Object { + "label": "Hosts", + "type": "number", + "value": 2, + }, + "inboundTraffic": Object { + "label": "Inbound traffic", + "type": "bytesPerSecond", + "value": 3.5, + }, + "memory": Object { + "label": "Memory usage", + "type": "percent", + "value": 0.0015, + }, + "outboundTraffic": Object { + "label": "Outbound traffic", + "type": "bytesPerSecond", + "value": 3, + }, + }, + "title": "Metrics", +} +`; diff --git a/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts b/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts new file mode 100644 index 0000000000000..21946c7c5653a --- /dev/null +++ b/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { coreMock } from 'src/core/public/mocks'; +import { createMetricsHasData, createMetricsFetchData } from './metrics_overview_fetchers'; +import { CoreStart } from 'kibana/public'; +import { InfraClientStartDeps, InfraClientStartExports } from './types'; +import moment from 'moment'; +import { FAKE_SNAPSHOT_RESPONSE } from './test_utils'; + +function setup() { + const core = coreMock.createStart(); + const mockedGetStartServices = jest.fn(() => { + const deps = {}; + return Promise.resolve([ + core as CoreStart, + deps as InfraClientStartDeps, + void 0 as InfraClientStartExports, + ]) as Promise<[CoreStart, InfraClientStartDeps, InfraClientStartExports]>; + }); + return { core, mockedGetStartServices }; +} + +describe('Metrics UI Observability Homepage Functions', () => { + describe('createMetricsHasData()', () => { + it('should return true when true', async () => { + const { core, mockedGetStartServices } = setup(); + core.http.get.mockResolvedValue({ + status: { + indexFields: [], + logIndicesExist: false, + metricIndicesExist: true, + }, + }); + const hasData = createMetricsHasData(mockedGetStartServices); + const response = await hasData(); + expect(core.http.get).toHaveBeenCalledTimes(1); + expect(response).toBeTruthy(); + }); + it('should return false when false', async () => { + const { core, mockedGetStartServices } = setup(); + core.http.get.mockResolvedValue({ + status: { + indexFields: [], + logIndicesExist: false, + metricIndicesExist: false, + }, + }); + const hasData = createMetricsHasData(mockedGetStartServices); + const response = await hasData(); + expect(core.http.get).toHaveBeenCalledTimes(1); + expect(response).toBeFalsy(); + }); + }); + + describe('createMetricsFetchData()', () => { + it('should just work', async () => { + const { core, mockedGetStartServices } = setup(); + core.http.post.mockResolvedValue(FAKE_SNAPSHOT_RESPONSE); + const fetchData = createMetricsFetchData(mockedGetStartServices); + const endTime = moment(); + const startTime = endTime.clone().subtract(1, 'h'); + const bucketSize = '300s'; + const response = await fetchData({ + startTime: startTime.toISOString(), + endTime: endTime.toISOString(), + bucketSize, + }); + expect(core.http.post).toHaveBeenCalledTimes(1); + expect(core.http.post).toHaveBeenCalledWith('/api/metrics/snapshot', { + body: JSON.stringify({ + sourceId: 'default', + metrics: [{ type: 'cpu' }, { type: 'memory' }, { type: 'rx' }, { type: 'tx' }], + groupBy: [], + nodeType: 'host', + timerange: { + from: startTime.valueOf(), + to: endTime.valueOf(), + interval: '300s', + forceInterval: true, + ignoreLookback: true, + }, + }), + }); + expect(response).toMatchSnapshot(); + }); + }); +}); diff --git a/x-pack/plugins/infra/public/metrics_overview_fetchers.ts b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts new file mode 100644 index 0000000000000..d10ad5dda5320 --- /dev/null +++ b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts @@ -0,0 +1,161 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import moment from 'moment'; +import { sum, isFinite, isNumber } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { MetricsFetchDataResponse, FetchDataParams } from '../../observability/public'; +import { + SnapshotRequest, + SnapshotMetricInput, + SnapshotNode, + SnapshotNodeResponse, +} from '../common/http_api/snapshot_api'; +import { SnapshotMetricType } from '../common/inventory_models/types'; +import { InfraClientCoreSetup } from './types'; +import { SourceResponse } from '../common/http_api/source_api'; + +export const createMetricsHasData = ( + getStartServices: InfraClientCoreSetup['getStartServices'] +) => async () => { + const [coreServices] = await getStartServices(); + const { http } = coreServices; + const results = await http.get('/api/metrics/source/default/metrics'); + return results.status.metricIndicesExist; +}; + +export const average = (values: number[]) => (values.length ? sum(values) / values.length : 0); + +export const combineNodesBy = ( + metric: SnapshotMetricType, + nodes: SnapshotNode[], + combinator: (values: number[]) => number +) => { + const values = nodes.reduce((acc, node) => { + const snapshotMetric = node.metrics.find((m) => m.name === metric); + if (snapshotMetric?.value != null && isFinite(snapshotMetric.value)) { + acc.push(snapshotMetric.value); + } + return acc; + }, [] as number[]); + return combinator(values); +}; + +interface CombinedRow { + values: number[]; + timestamp: number; +} + +export const combineNodeTimeseriesBy = ( + metric: SnapshotMetricType, + nodes: SnapshotNode[], + combinator: (values: number[]) => number +) => { + const combinedTimeseries = nodes.reduce((acc, node) => { + const snapshotMetric = node.metrics.find((m) => m.name === metric); + if (snapshotMetric && snapshotMetric.timeseries) { + snapshotMetric.timeseries.rows.forEach((row) => { + const combinedRow = acc.find((r) => r.timestamp === row.timestamp); + if (combinedRow) { + combinedRow.values.push(isNumber(row.metric_0) ? row.metric_0 : 0); + } else { + acc.push({ + timestamp: row.timestamp, + values: [isNumber(row.metric_0) ? row.metric_0 : 0], + }); + } + }); + } + return acc; + }, [] as CombinedRow[]); + return combinedTimeseries.map((row) => ({ x: row.timestamp, y: combinator(row.values) })); +}; + +export const createMetricsFetchData = ( + getStartServices: InfraClientCoreSetup['getStartServices'] +) => async ({ + startTime, + endTime, + bucketSize, +}: FetchDataParams): Promise => { + const [coreServices] = await getStartServices(); + const { http } = coreServices; + const snapshotRequest: SnapshotRequest = { + sourceId: 'default', + metrics: ['cpu', 'memory', 'rx', 'tx'].map((type) => ({ type })) as SnapshotMetricInput[], + groupBy: [], + nodeType: 'host', + timerange: { + from: moment(startTime).valueOf(), + to: moment(endTime).valueOf(), + interval: bucketSize, + forceInterval: true, + ignoreLookback: true, + }, + }; + + const results = await http.post('/api/metrics/snapshot', { + body: JSON.stringify(snapshotRequest), + }); + + const inboundLabel = i18n.translate('xpack.infra.observabilityHomepage.metrics.rxLabel', { + defaultMessage: 'Inbound traffic', + }); + + const outboundLabel = i18n.translate('xpack.infra.observabilityHomepage.metrics.txLabel', { + defaultMessage: 'Outbound traffic', + }); + + return { + title: i18n.translate('xpack.infra.observabilityHomepage.metrics.title', { + defaultMessage: 'Metrics', + }), + appLink: '/app/metrics', + stats: { + hosts: { + type: 'number', + label: i18n.translate('xpack.infra.observabilityHomepage.metrics.hostsLabel', { + defaultMessage: 'Hosts', + }), + value: results.nodes.length, + }, + cpu: { + type: 'percent', + label: i18n.translate('xpack.infra.observabilityHomepage.metrics.cpuLabel', { + defaultMessage: 'CPU usage', + }), + value: combineNodesBy('cpu', results.nodes, average), + }, + memory: { + type: 'percent', + label: i18n.translate('xpack.infra.observabilityHomepage.metrics.memoryLabel', { + defaultMessage: 'Memory usage', + }), + value: combineNodesBy('memory', results.nodes, average), + }, + inboundTraffic: { + type: 'bytesPerSecond', + label: inboundLabel, + value: combineNodesBy('rx', results.nodes, average), + }, + outboundTraffic: { + type: 'bytesPerSecond', + label: outboundLabel, + value: combineNodesBy('tx', results.nodes, average), + }, + }, + series: { + inboundTraffic: { + label: inboundLabel, + coordinates: combineNodeTimeseriesBy('rx', results.nodes, average), + }, + outboundTraffic: { + label: outboundLabel, + coordinates: combineNodeTimeseriesBy('tx', results.nodes, average), + }, + }, + }; +}; diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts index 1b28945320bb6..2dda664a7f675 100644 --- a/x-pack/plugins/infra/public/plugin.ts +++ b/x-pack/plugins/infra/public/plugin.ts @@ -19,6 +19,7 @@ import { InfraClientPluginClass, } from './types'; import { getLogsHasDataFetcher, getLogsOverviewDataFetcher } from './utils/logs_overview_fetchers'; +import { createMetricsHasData, createMetricsFetchData } from './metrics_overview_fetchers'; export class Plugin implements InfraClientPluginClass { constructor(_context: PluginInitializerContext) {} @@ -36,6 +37,12 @@ export class Plugin implements InfraClientPluginClass { hasData: getLogsHasDataFetcher(core.getStartServices), fetchData: getLogsOverviewDataFetcher(core.getStartServices), }); + + pluginsSetup.observability.dashboard.register({ + appName: 'infra_metrics', + hasData: createMetricsHasData(core.getStartServices), + fetchData: createMetricsFetchData(core.getStartServices), + }); } core.application.register({ diff --git a/x-pack/plugins/infra/public/test_utils/index.ts b/x-pack/plugins/infra/public/test_utils/index.ts new file mode 100644 index 0000000000000..3de4c40f47cc9 --- /dev/null +++ b/x-pack/plugins/infra/public/test_utils/index.ts @@ -0,0 +1,309 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const FAKE_SNAPSHOT_RESPONSE = { + nodes: [ + { + path: [{ value: 'host-01', label: 'host-01', ip: '192.168.1.10' }], + metrics: [ + { + name: 'memory', + value: 0.002, + max: 0.00134, + avg: 0.0009833333333333335, + timeseries: { + id: 'memory', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 0.001 }, + { timestamp: 1593631055000, metric_0: 0.00099 }, + { timestamp: 1593631355000, metric_0: 0.00133 }, + { timestamp: 1593631655000, metric_0: 0.00099 }, + { timestamp: 1593631955000, metric_0: 0.001 }, + { timestamp: 1593632255000, metric_0: 0.00099 }, + { timestamp: 1593632555000, metric_0: 0.00067 }, + { timestamp: 1593632855000, metric_0: 0.001 }, + { timestamp: 1593633155000, metric_0: 0.00099 }, + { timestamp: 1593633455000, metric_0: 0.00099 }, + { timestamp: 1593633755000, metric_0: 0.00099 }, + { timestamp: 1593634055000, metric_0: 0.001 }, + { timestamp: 1593634355000, metric_0: 0.00067 }, + { timestamp: 1593634655000, metric_0: 0.00133 }, + { timestamp: 1593634955000, metric_0: 0.00101 }, + { timestamp: 1593635255000, metric_0: 0.00134 }, + { timestamp: 1593635555000, metric_0: 0.00133 }, + { timestamp: 1593635855000, metric_0: 0.00102 }, + { timestamp: 1593636155000, metric_0: 0.00101 }, + { timestamp: 1593636455000, metric_0: 0.001 }, + ], + }, + }, + { + name: 'cpu', + value: 0.002, + max: 0.00134, + avg: 0.0009833333333333335, + timeseries: { + id: 'cpu', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 0.001 }, + { timestamp: 1593631055000, metric_0: 0.00099 }, + { timestamp: 1593631355000, metric_0: 0.00133 }, + { timestamp: 1593631655000, metric_0: 0.00099 }, + { timestamp: 1593631955000, metric_0: 0.001 }, + { timestamp: 1593632255000, metric_0: 0.00099 }, + { timestamp: 1593632555000, metric_0: 0.00067 }, + { timestamp: 1593632855000, metric_0: 0.001 }, + { timestamp: 1593633155000, metric_0: 0.00099 }, + { timestamp: 1593633455000, metric_0: 0.00099 }, + { timestamp: 1593633755000, metric_0: 0.00099 }, + { timestamp: 1593634055000, metric_0: 0.001 }, + { timestamp: 1593634355000, metric_0: 0.00067 }, + { timestamp: 1593634655000, metric_0: 0.00133 }, + { timestamp: 1593634955000, metric_0: 0.00101 }, + { timestamp: 1593635255000, metric_0: 0.00134 }, + { timestamp: 1593635555000, metric_0: 0.00133 }, + { timestamp: 1593635855000, metric_0: 0.00102 }, + { timestamp: 1593636155000, metric_0: 0.00101 }, + { timestamp: 1593636455000, metric_0: 0.001 }, + ], + }, + }, + { + name: 'rx', + value: 4, + max: 13, + avg: 3.761904761904762, + timeseries: { + id: 'rx', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 4 }, + { timestamp: 1593631055000, metric_0: 4 }, + { timestamp: 1593631355000, metric_0: 9 }, + { timestamp: 1593631655000, metric_0: 4 }, + { timestamp: 1593631955000, metric_0: 3 }, + { timestamp: 1593632255000, metric_0: 2 }, + { timestamp: 1593632555000, metric_0: 2 }, + { timestamp: 1593632855000, metric_0: 4 }, + { timestamp: 1593633155000, metric_0: 3 }, + { timestamp: 1593633455000, metric_0: 2 }, + { timestamp: 1593633755000, metric_0: 2 }, + { timestamp: 1593634055000, metric_0: 3 }, + { timestamp: 1593634355000, metric_0: 0 }, + { timestamp: 1593634655000, metric_0: 11 }, + { timestamp: 1593634955000, metric_0: 6 }, + { timestamp: 1593635255000, metric_0: 14 }, + { timestamp: 1593635555000, metric_0: 10 }, + { timestamp: 1593635855000, metric_0: 8 }, + { timestamp: 1593636155000, metric_0: 4 }, + { timestamp: 1593636455000, metric_0: 4 }, + ], + }, + }, + { + name: 'tx', + value: 3, + max: 13, + avg: 3.761904761904762, + timeseries: { + id: 'tx', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 5 }, + { timestamp: 1593631055000, metric_0: 5 }, + { timestamp: 1593631355000, metric_0: 10 }, + { timestamp: 1593631655000, metric_0: 5 }, + { timestamp: 1593631955000, metric_0: 3 }, + { timestamp: 1593632255000, metric_0: 3 }, + { timestamp: 1593632555000, metric_0: 3 }, + { timestamp: 1593632855000, metric_0: 5 }, + { timestamp: 1593633155000, metric_0: 4 }, + { timestamp: 1593633455000, metric_0: 3 }, + { timestamp: 1593633755000, metric_0: 3 }, + { timestamp: 1593634055000, metric_0: 3 }, + { timestamp: 1593634355000, metric_0: 2 }, + { timestamp: 1593634655000, metric_0: 12 }, + { timestamp: 1593634955000, metric_0: 7 }, + { timestamp: 1593635255000, metric_0: 15 }, + { timestamp: 1593635555000, metric_0: 11 }, + { timestamp: 1593635855000, metric_0: 9 }, + { timestamp: 1593636155000, metric_0: 4 }, + { timestamp: 1593636455000, metric_0: 5 }, + ], + }, + }, + ], + }, + { + path: [{ value: 'host-02', label: 'host-02', ip: '192.168.1.11' }], + metrics: [ + { + name: 'memory', + value: 0.001, + max: 0.00134, + avg: 0.0009833333333333335, + timeseries: { + id: 'memory', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 0.001 }, + { timestamp: 1593631055000, metric_0: 0.00099 }, + { timestamp: 1593631355000, metric_0: 0.00133 }, + { timestamp: 1593631655000, metric_0: 0.00099 }, + { timestamp: 1593631955000, metric_0: 0.001 }, + { timestamp: 1593632255000, metric_0: 0.00099 }, + { timestamp: 1593632555000, metric_0: 0.00067 }, + { timestamp: 1593632855000, metric_0: 0.001 }, + { timestamp: 1593633155000, metric_0: 0.00099 }, + { timestamp: 1593633455000, metric_0: 0.00099 }, + { timestamp: 1593633755000, metric_0: 0.00099 }, + { timestamp: 1593634055000, metric_0: 0.001 }, + { timestamp: 1593634355000, metric_0: 0.00067 }, + { timestamp: 1593634655000, metric_0: 0.00133 }, + { timestamp: 1593634955000, metric_0: 0.00101 }, + { timestamp: 1593635255000, metric_0: 0.00134 }, + { timestamp: 1593635555000, metric_0: 0.00133 }, + { timestamp: 1593635855000, metric_0: 0.00102 }, + { timestamp: 1593636155000, metric_0: 0.00101 }, + { timestamp: 1593636455000, metric_0: 0.001 }, + ], + }, + }, + { + name: 'cpu', + value: 0.001, + max: 0.00134, + avg: 0.0009833333333333335, + timeseries: { + id: 'cpu', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 0.001 }, + { timestamp: 1593631055000, metric_0: 0.00099 }, + { timestamp: 1593631355000, metric_0: 0.00133 }, + { timestamp: 1593631655000, metric_0: 0.00099 }, + { timestamp: 1593631955000, metric_0: 0.001 }, + { timestamp: 1593632255000, metric_0: 0.00099 }, + { timestamp: 1593632555000, metric_0: 0.00067 }, + { timestamp: 1593632855000, metric_0: 0.001 }, + { timestamp: 1593633155000, metric_0: 0.00099 }, + { timestamp: 1593633455000, metric_0: 0.00099 }, + { timestamp: 1593633755000, metric_0: 0.00099 }, + { timestamp: 1593634055000, metric_0: 0.001 }, + { timestamp: 1593634355000, metric_0: 0.00067 }, + { timestamp: 1593634655000, metric_0: 0.00133 }, + { timestamp: 1593634955000, metric_0: 0.00101 }, + { timestamp: 1593635255000, metric_0: 0.00134 }, + { timestamp: 1593635555000, metric_0: 0.00133 }, + { timestamp: 1593635855000, metric_0: 0.00102 }, + { timestamp: 1593636155000, metric_0: 0.00101 }, + { timestamp: 1593636455000, metric_0: 0.001 }, + ], + }, + }, + { + name: 'rx', + value: 3, + max: 13, + avg: 3.761904761904762, + timeseries: { + id: 'rx', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 3 }, + { timestamp: 1593631055000, metric_0: 3 }, + { timestamp: 1593631355000, metric_0: 8 }, + { timestamp: 1593631655000, metric_0: 3 }, + { timestamp: 1593631955000, metric_0: 2 }, + { timestamp: 1593632255000, metric_0: 1 }, + { timestamp: 1593632555000, metric_0: 1 }, + { timestamp: 1593632855000, metric_0: 3 }, + { timestamp: 1593633155000, metric_0: 2 }, + { timestamp: 1593633455000, metric_0: 1 }, + { timestamp: 1593633755000, metric_0: 1 }, + { timestamp: 1593634055000, metric_0: 2 }, + { timestamp: 1593634355000, metric_0: 0 }, + { timestamp: 1593634655000, metric_0: 10 }, + { timestamp: 1593634955000, metric_0: 5 }, + { timestamp: 1593635255000, metric_0: 13 }, + { timestamp: 1593635555000, metric_0: 9 }, + { timestamp: 1593635855000, metric_0: 7 }, + { timestamp: 1593636155000, metric_0: 2 }, + { timestamp: 1593636455000, metric_0: 3 }, + ], + }, + }, + { + name: 'tx', + value: 3, + max: 13, + avg: 3.761904761904762, + timeseries: { + id: 'tx', + columns: [ + { name: 'timestamp', type: 'date' }, + { name: 'metric_0', type: 'number' }, + ], + rows: [ + { timestamp: 1593630455000, metric_0: 0 }, + { timestamp: 1593630755000, metric_0: 3 }, + { timestamp: 1593631055000, metric_0: 3 }, + { timestamp: 1593631355000, metric_0: 8 }, + { timestamp: 1593631655000, metric_0: 3 }, + { timestamp: 1593631955000, metric_0: 2 }, + { timestamp: 1593632255000, metric_0: 1 }, + { timestamp: 1593632555000, metric_0: 1 }, + { timestamp: 1593632855000, metric_0: 3 }, + { timestamp: 1593633155000, metric_0: 2 }, + { timestamp: 1593633455000, metric_0: 1 }, + { timestamp: 1593633755000, metric_0: 1 }, + { timestamp: 1593634055000, metric_0: 2 }, + { timestamp: 1593634355000, metric_0: 0 }, + { timestamp: 1593634655000, metric_0: 10 }, + { timestamp: 1593634955000, metric_0: 5 }, + { timestamp: 1593635255000, metric_0: 13 }, + { timestamp: 1593635555000, metric_0: 9 }, + { timestamp: 1593635855000, metric_0: 7 }, + { timestamp: 1593636155000, metric_0: 2 }, + { timestamp: 1593636455000, metric_0: 3 }, + ], + }, + }, + ], + }, + ], + interval: '300s', +}; diff --git a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts index e65d1779520cf..e57dfebb36419 100644 --- a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts +++ b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts @@ -59,7 +59,6 @@ export interface MetricsFetchDataResponse extends FetchDataResponse { hosts: Stat; cpu: Stat; memory: Stat; - disk: Stat; inboundTraffic: Stat; outboundTraffic: Stat; }; From a921bbf4c2e31fb0a02c7c31cef56ea009bb0ded Mon Sep 17 00:00:00 2001 From: Kevin Logan <56395104+kevinlog@users.noreply.github.com> Date: Thu, 2 Jul 2020 16:18:52 -0400 Subject: [PATCH 04/59] [SECURITY SOLUTION] Remove unneeded options from default policy, remove Notify user option from UI (#70546) --- .../common/endpoint/models/policy_config.ts | 44 +------------------ .../common/endpoint/types.ts | 21 --------- .../view/policy_forms/protections/malware.tsx | 7 --- .../apps/endpoint/policy_details.ts | 38 ++-------------- 4 files changed, 5 insertions(+), 105 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts index 199b8a91e4307..37b7308856196 100644 --- a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts +++ b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts @@ -25,22 +25,8 @@ export const factory = (): PolicyConfig => { mode: ProtectionModes.prevent, }, logging: { - stdout: 'debug', file: 'info', }, - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { - connect: true, - process: true, - }, - }, - }, }, mac: { events: { @@ -49,25 +35,11 @@ export const factory = (): PolicyConfig => { network: true, }, malware: { - mode: ProtectionModes.detect, + mode: ProtectionModes.prevent, }, logging: { - stdout: 'debug', file: 'info', }, - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { - connect: true, - process: true, - }, - }, - }, }, linux: { events: { @@ -76,22 +48,8 @@ export const factory = (): PolicyConfig => { network: true, }, logging: { - stdout: 'debug', file: 'info', }, - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { - connect: true, - process: true, - }, - }, - }, }, }; }; diff --git a/x-pack/plugins/security_solution/common/endpoint/types.ts b/x-pack/plugins/security_solution/common/endpoint/types.ts index 42b1337a91464..f2b8acb627cc4 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types.ts @@ -613,10 +613,8 @@ export interface PolicyConfig { }; malware: MalwareFields; logging: { - stdout: string; file: string; }; - advanced: PolicyConfigAdvancedOptions; }; mac: { events: { @@ -626,10 +624,8 @@ export interface PolicyConfig { }; malware: MalwareFields; logging: { - stdout: string; file: string; }; - advanced: PolicyConfigAdvancedOptions; }; linux: { events: { @@ -638,10 +634,8 @@ export interface PolicyConfig { network: boolean; }; logging: { - stdout: string; file: string; }; - advanced: PolicyConfigAdvancedOptions; }; } @@ -663,20 +657,6 @@ export interface UIPolicyConfig { linux: Pick; } -interface PolicyConfigAdvancedOptions { - elasticsearch: { - indices: { - control: string; - event: string; - logging: string; - }; - kernel: { - connect: boolean; - process: boolean; - }; - }; -} - /** Policy: Malware protection fields */ export interface MalwareFields { mode: ProtectionModes; @@ -686,7 +666,6 @@ export interface MalwareFields { export enum ProtectionModes { detect = 'detect', prevent = 'prevent', - preventNotify = 'preventNotify', off = 'off', } diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/malware.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/malware.tsx index 77d4d4364acdd..23ac6cc5b813d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/malware.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_forms/protections/malware.tsx @@ -95,13 +95,6 @@ export const MalwareProtections = React.memo(() => { }), protection: 'malware', }, - { - id: ProtectionModes.preventNotify, - label: i18n.translate('xpack.securitySolution.endpoint.policy.details.preventAndNotify', { - defaultMessage: 'Prevent and notify user', - }), - protection: 'malware', - }, ]; }, []); diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts index 45ea82c59bf97..bacba619e5648 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts @@ -118,45 +118,15 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }, policy: { linux: { - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { connect: true, process: true }, - }, - }, events: { file: false, network: true, process: true }, - logging: { file: 'info', stdout: 'debug' }, + logging: { file: 'info' }, }, mac: { - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { connect: true, process: true }, - }, - }, events: { file: false, network: true, process: true }, - logging: { file: 'info', stdout: 'debug' }, - malware: { mode: 'detect' }, + logging: { file: 'info' }, + malware: { mode: 'prevent' }, }, windows: { - advanced: { - elasticsearch: { - indices: { - control: 'control-index', - event: 'event-index', - logging: 'logging-index', - }, - kernel: { connect: true, process: true }, - }, - }, events: { dll_and_driver_load: true, dns: true, @@ -166,7 +136,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { registry: true, security: true, }, - logging: { file: 'info', stdout: 'debug' }, + logging: { file: 'info' }, malware: { mode: 'prevent' }, }, }, From fa70afb5ef3e6106f3b5d31d2f043e4b979a30ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Thu, 2 Jul 2020 22:34:53 +0200 Subject: [PATCH 05/59] [APM] Disable flaky useFetcher test (#70638) --- .../useDelayedVisibility/index.test.tsx | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/useDelayedVisibility/index.test.tsx b/x-pack/plugins/apm/public/components/shared/useDelayedVisibility/index.test.tsx index 9f72ac6d5916e..447e11eab5e41 100644 --- a/x-pack/plugins/apm/public/components/shared/useDelayedVisibility/index.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/useDelayedVisibility/index.test.tsx @@ -58,28 +58,29 @@ describe.skip('useFetcher', () => { expect(hook.result.current).toEqual(true); }); - it('is true for minimum 1000ms', () => { - hook = renderHook((isLoading) => useDelayedVisibility(isLoading), { - initialProps: false, - }); + // Disabled because it's flaky: https://github.com/elastic/kibana/issues/66389 + // it('is true for minimum 1000ms', () => { + // hook = renderHook((isLoading) => useDelayedVisibility(isLoading), { + // initialProps: false, + // }); - hook.rerender(true); + // hook.rerender(true); - act(() => { - jest.advanceTimersByTime(100); - }); + // act(() => { + // jest.advanceTimersByTime(100); + // }); - hook.rerender(false); - act(() => { - jest.advanceTimersByTime(900); - }); + // hook.rerender(false); + // act(() => { + // jest.advanceTimersByTime(900); + // }); - expect(hook.result.current).toEqual(true); + // expect(hook.result.current).toEqual(true); - act(() => { - jest.advanceTimersByTime(100); - }); + // act(() => { + // jest.advanceTimersByTime(100); + // }); - expect(hook.result.current).toEqual(false); - }); + // expect(hook.result.current).toEqual(false); + // }); }); From fd307a06350d8b9ddd8cb1976ed55a85bc6980da Mon Sep 17 00:00:00 2001 From: liza-mae Date: Thu, 2 Jul 2020 14:37:02 -0600 Subject: [PATCH 06/59] Update network idle timeout (#70629) Co-authored-by: Elastic Machine --- test/scripts/jenkins_visual_regression.sh | 2 +- test/scripts/jenkins_xpack_visual_regression.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/scripts/jenkins_visual_regression.sh b/test/scripts/jenkins_visual_regression.sh index a32782deec65b..17345d4301882 100755 --- a/test/scripts/jenkins_visual_regression.sh +++ b/test/scripts/jenkins_visual_regression.sh @@ -11,7 +11,7 @@ mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 echo " -> running visual regression tests from kibana directory" -yarn percy exec -t 500 -- -- \ +yarn percy exec -t 10000 -- -- \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$installDir" \ diff --git a/test/scripts/jenkins_xpack_visual_regression.sh b/test/scripts/jenkins_xpack_visual_regression.sh index b67c1c9060a6e..36bf3409a5421 100755 --- a/test/scripts/jenkins_xpack_visual_regression.sh +++ b/test/scripts/jenkins_xpack_visual_regression.sh @@ -13,7 +13,7 @@ tar -xzf "$linuxBuild" -C "$installDir" --strip=1 echo " -> running visual regression tests from x-pack directory" cd "$XPACK_DIR" -yarn percy exec -t 500 -- -- \ +yarn percy exec -t 10000 -- -- \ node scripts/functional_tests \ --debug --bail \ --kibana-install-dir "$installDir" \ From e7749210b41dfda76392834714283f965c80dc1b Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 2 Jul 2020 14:48:04 -0600 Subject: [PATCH 07/59] [Maps] fix unable to edit heatmap metric (#70606) * [Maps] fix unable to edit heatmap metric * add comment Co-authored-by: Elastic Machine --- .../sources/es_agg_source/es_agg_source.js | 3 + .../es_geo_grid_source/es_geo_grid_source.js | 4 +- .../es_pew_pew_source/es_pew_pew_source.js | 4 +- .../__snapshots__/metrics_editor.test.js.snap | 86 +++++++++++++++++++ .../maps/public/components/metrics_editor.js | 9 +- .../public/components/metrics_editor.test.js | 33 +++++++ 6 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 x-pack/plugins/maps/public/components/__snapshots__/metrics_editor.test.js.snap create mode 100644 x-pack/plugins/maps/public/components/metrics_editor.test.js diff --git a/x-pack/plugins/maps/public/classes/sources/es_agg_source/es_agg_source.js b/x-pack/plugins/maps/public/classes/sources/es_agg_source/es_agg_source.js index 97afac9ef1745..e20c509ccd4a2 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_agg_source/es_agg_source.js +++ b/x-pack/plugins/maps/public/classes/sources/es_agg_source/es_agg_source.js @@ -10,6 +10,8 @@ import { esAggFieldsFactory } from '../../fields/es_agg_field'; import { AGG_TYPE, COUNT_PROP_LABEL, FIELD_ORIGIN } from '../../../../common/constants'; import { getSourceAggKey } from '../../../../common/get_agg_key'; +export const DEFAULT_METRIC = { type: AGG_TYPE.COUNT }; + export class AbstractESAggSource extends AbstractESSource { constructor(descriptor, inspectorAdapters) { super(descriptor, inspectorAdapters); @@ -48,6 +50,7 @@ export class AbstractESAggSource extends AbstractESSource { getMetricFields() { const metrics = this._metricFields.filter((esAggField) => esAggField.isValid()); + // Handle case where metrics is empty because older saved object state is empty array or there are no valid aggs. return metrics.length === 0 ? esAggFieldsFactory({ type: AGG_TYPE.COUNT }, this, this.getOriginForField()) : metrics; diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.js b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.js index b613f577067ba..9431fb55dc88b 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.js +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_grid_source/es_geo_grid_source.js @@ -18,7 +18,7 @@ import { } from '../../../../common/constants'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; -import { AbstractESAggSource } from '../es_agg_source'; +import { AbstractESAggSource, DEFAULT_METRIC } from '../es_agg_source'; import { DataRequestAbortError } from '../../util/data_request'; import { registerSource } from '../source_registry'; import { makeESBbox } from '../../../elasticsearch_geo_utils'; @@ -42,7 +42,7 @@ export class ESGeoGridSource extends AbstractESAggSource { id: uuid(), indexPatternId, geoField, - metrics: metrics ? metrics : [], + metrics: metrics ? metrics : [DEFAULT_METRIC], requestType, resolution: resolution ? resolution : GRID_RESOLUTION.COARSE, }; diff --git a/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/es_pew_pew_source.js b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/es_pew_pew_source.js index 076e7a758a4fb..a4cff7c89a011 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/es_pew_pew_source.js +++ b/x-pack/plugins/maps/public/classes/sources/es_pew_pew_source/es_pew_pew_source.js @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import { SOURCE_TYPES, VECTOR_SHAPE_TYPE } from '../../../../common/constants'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; import { convertToLines } from './convert_to_lines'; -import { AbstractESAggSource } from '../es_agg_source'; +import { AbstractESAggSource, DEFAULT_METRIC } from '../es_agg_source'; import { indexPatterns } from '../../../../../../../src/plugins/data/public'; import { registerSource } from '../source_registry'; @@ -32,7 +32,7 @@ export class ESPewPewSource extends AbstractESAggSource { indexPatternId: indexPatternId, sourceGeoField, destGeoField, - metrics: metrics ? metrics : [], + metrics: metrics ? metrics : [DEFAULT_METRIC], }; } diff --git a/x-pack/plugins/maps/public/components/__snapshots__/metrics_editor.test.js.snap b/x-pack/plugins/maps/public/components/__snapshots__/metrics_editor.test.js.snap new file mode 100644 index 0000000000000..0d4f1f99e464c --- /dev/null +++ b/x-pack/plugins/maps/public/components/__snapshots__/metrics_editor.test.js.snap @@ -0,0 +1,86 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`should add default count metric when metrics is empty array 1`] = ` + +
+
+ +
+
+ + + + + + +
+`; + +exports[`should render metrics editor 1`] = ` + +
+
+ +
+
+ + + + + + +
+`; diff --git a/x-pack/plugins/maps/public/components/metrics_editor.js b/x-pack/plugins/maps/public/components/metrics_editor.js index 6c5a9af8f0f02..7d4d7bf3ec7ab 100644 --- a/x-pack/plugins/maps/public/components/metrics_editor.js +++ b/x-pack/plugins/maps/public/components/metrics_editor.js @@ -10,11 +10,14 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButtonEmpty, EuiSpacer, EuiTextAlign } from '@elastic/eui'; import { MetricEditor } from './metric_editor'; -import { AGG_TYPE } from '../../common/constants'; +import { DEFAULT_METRIC } from '../classes/sources/es_agg_source'; export function MetricsEditor({ fields, metrics, onChange, allowMultipleMetrics, metricsFilter }) { function renderMetrics() { - return metrics.map((metric, index) => { + // There was a bug in 7.8 that initialized metrics to []. + // This check is needed to handle any saved objects created before the bug was patched. + const nonEmptyMetrics = metrics.length === 0 ? [DEFAULT_METRIC] : metrics; + return nonEmptyMetrics.map((metric, index) => { const onMetricChange = (metric) => { onChange([...metrics.slice(0, index), metric, ...metrics.slice(index + 1)]); }; @@ -100,6 +103,6 @@ MetricsEditor.propTypes = { }; MetricsEditor.defaultProps = { - metrics: [{ type: AGG_TYPE.COUNT }], + metrics: [DEFAULT_METRIC], allowMultipleMetrics: true, }; diff --git a/x-pack/plugins/maps/public/components/metrics_editor.test.js b/x-pack/plugins/maps/public/components/metrics_editor.test.js new file mode 100644 index 0000000000000..bcbeef29875ee --- /dev/null +++ b/x-pack/plugins/maps/public/components/metrics_editor.test.js @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { MetricsEditor } from './metrics_editor'; +import { AGG_TYPE } from '../../common/constants'; + +const defaultProps = { + metrics: [ + { + type: AGG_TYPE.SUM, + field: 'myField', + }, + ], + fields: [], + onChange: () => {}, + allowMultipleMetrics: true, + metricsFilter: () => {}, +}; + +test('should render metrics editor', async () => { + const component = shallow(); + expect(component).toMatchSnapshot(); +}); + +test('should add default count metric when metrics is empty array', async () => { + const component = shallow(); + expect(component).toMatchSnapshot(); +}); From 6a33a78f31ca4ef3a39cf573f4f74a739b7cbdfb Mon Sep 17 00:00:00 2001 From: Yara Tercero Date: Thu, 2 Jul 2020 17:04:48 -0400 Subject: [PATCH 08/59] fix 400 error on initial signals search (#70618) ### Summary On initial render of the SIEM pages, a 400 error was showing for POST http://localhost:5601/api/detection_engine/signals/search. This PR is a temporary fix for this bug. This initial call is being used to populate the Last alert text that shows at the top of a number of the pages. The reason the size was 0 is because we weren't interested in the signals themselves, just the timestamp of the last alert. Teamed up with @XavierM and it seems to us that the issue is the server side validation. It may be Hapi misreading the 0 as false or our updated validation not accepting size 0. --- .../public/alerts/components/alerts_info/query.dsl.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/alerts/components/alerts_info/query.dsl.ts b/x-pack/plugins/security_solution/public/alerts/components/alerts_info/query.dsl.ts index a3972fd35bf2d..4b57c7dc20d9f 100644 --- a/x-pack/plugins/security_solution/public/alerts/components/alerts_info/query.dsl.ts +++ b/x-pack/plugins/security_solution/public/alerts/components/alerts_info/query.dsl.ts @@ -10,6 +10,7 @@ export const buildLastAlertsQuery = (ruleId: string | undefined | null) => { bool: { should: [{ match: { 'signal.status': 'open' } }], minimum_should_match: 1 }, }, ]; + return { aggs: { lastSeen: { max: { field: '@timestamp' } }, @@ -30,7 +31,7 @@ export const buildLastAlertsQuery = (ruleId: string | undefined | null) => { : queryFilter, }, }, - size: 0, + size: 1, track_total_hits: true, }; }; From 81d26fc9f8eacf636fcf3999566bdc4f26e75f0f Mon Sep 17 00:00:00 2001 From: Andrew Goldstein Date: Thu, 2 Jul 2020 15:37:42 -0600 Subject: [PATCH 09/59] [Security Solution] Renames the `Investigate in Resolver` Timeline action (#70634) ## [Security Solution] Renames the `Investigate in Resolver` Timeline action - Renames the `Investigate in Resolver` Timeline action, a follow-up item from the `What's next?` section of https://github.com/elastic/kibana/pull/70111 - Fixes a CSS issue where the icon didn't align with the others on non-default row-heights ## Before ![before-investigate-in-resolver](https://user-images.githubusercontent.com/4459398/86393038-a97eeb80-bc59-11ea-9ba4-449ab20ddd25.png) ## After ![after-analyze-event](https://user-images.githubusercontent.com/4459398/86393050-ad127280-bc59-11ea-8040-7f254b0255b0.png) Desk tested in: - Chrome `83.0.4103.116` - Firefox `78.0.1` - Safari `13.1.1` --- .../public/timelines/components/timeline/body/translations.ts | 2 +- .../public/timelines/components/timeline/styles.tsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts index ef7ee26cd3ecf..5af2f3ef488b0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/translations.ts @@ -69,6 +69,6 @@ export const COLLAPSE = i18n.translate( export const ACTION_INVESTIGATE_IN_RESOLVER = i18n.translate( 'xpack.securitySolution.timeline.body.actions.investigateInResolverTooltip', { - defaultMessage: 'Investigate in Resolver', + defaultMessage: 'Analyze event', } ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx index b27f213c6a02c..d1a58dafcb328 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx @@ -204,6 +204,7 @@ export const EventsTrSupplement = styled.div.attrs(({ className = '' }) => ({ export const EventsTdGroupActions = styled.div.attrs(({ className = '' }) => ({ className: `siemEventsTable__tdGroupActions ${className}`, }))<{ actionsColumnWidth: number }>` + align-items: center; display: flex; flex: 0 0 ${({ actionsColumnWidth }) => `${actionsColumnWidth}px`}; min-width: 0; From 113962e12a507ae4c446abd3560df0324a87f1d2 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Thu, 2 Jul 2020 14:47:08 -0700 Subject: [PATCH 10/59] Update component templates list to render empty prompt inside of content container. Show detail panel when deep-linked, even if there are no component templates. (#70633) Co-authored-by: Elastic Machine --- .../component_template_list/component_template_list.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx index 05a5ed462d8f7..f9e6234e1415c 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx @@ -43,10 +43,6 @@ export const ComponentTemplateList: React.FunctionComponent = ({ trackMetric('loaded', UIM_COMPONENT_TEMPLATE_LIST_LOAD); }, [trackMetric]); - if (data && data.length === 0) { - return ; - } - let content: React.ReactNode; if (isLoading) { @@ -67,6 +63,8 @@ export const ComponentTemplateList: React.FunctionComponent = ({ history={history as ScopedHistory} /> ); + } else if (data && data.length === 0) { + content = ; } else if (error) { content = ; } From 5fcf803d3d3fbf6ec42310e11c179496a6bf875c Mon Sep 17 00:00:00 2001 From: patrykkopycinski Date: Thu, 2 Jul 2020 23:48:41 +0200 Subject: [PATCH 11/59] Fix saved query modal overlay (#68826) --- .../saved_query_management_component.tsx | 87 ++++++++++++------- .../components/query_bar/index.test.tsx | 59 +++++++++++++ 2 files changed, 115 insertions(+), 31 deletions(-) diff --git a/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx b/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx index 87f53e1c72079..8582f4a12fa38 100644 --- a/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx +++ b/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx @@ -33,7 +33,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import React, { useEffect, useState, Fragment, useRef } from 'react'; +import React, { useCallback, useEffect, useState, Fragment, useRef } from 'react'; import { sortBy } from 'lodash'; import { SavedQuery, SavedQueryService } from '../..'; import { SavedQueryListItem } from './saved_query_list_item'; @@ -88,9 +88,51 @@ export function SavedQueryManagementComponent({ } }, [isOpen, activePage, savedQueryService]); - const goToPage = (pageNumber: number) => { - setActivePage(pageNumber); - }; + const handleTogglePopover = useCallback(() => setIsOpen((currentState) => !currentState), [ + setIsOpen, + ]); + + const handleClosePopover = useCallback(() => setIsOpen(false), []); + + const handleSave = useCallback(() => { + handleClosePopover(); + onSave(); + }, [handleClosePopover, onSave]); + + const handleSaveAsNew = useCallback(() => { + handleClosePopover(); + onSaveAsNew(); + }, [handleClosePopover, onSaveAsNew]); + + const handleSelect = useCallback( + (savedQueryToSelect) => { + handleClosePopover(); + onLoad(savedQueryToSelect); + }, + [handleClosePopover, onLoad] + ); + + const handleDelete = useCallback( + (savedQueryToDelete: SavedQuery) => { + const onDeleteSavedQuery = async (savedQuery: SavedQuery) => { + cancelPendingListingRequest.current(); + setSavedQueries( + savedQueries.filter((currentSavedQuery) => currentSavedQuery.id !== savedQuery.id) + ); + + if (loadedSavedQuery && loadedSavedQuery.id === savedQuery.id) { + onClearSavedQuery(); + } + + await savedQueryService.deleteSavedQuery(savedQuery.id); + setActivePage(0); + }; + + onDeleteSavedQuery(savedQueryToDelete); + handleClosePopover(); + }, + [handleClosePopover, loadedSavedQuery, onClearSavedQuery, savedQueries, savedQueryService] + ); const savedQueryDescriptionText = i18n.translate( 'data.search.searchBar.savedQueryDescriptionText', @@ -113,25 +155,13 @@ export function SavedQueryManagementComponent({ } ); - const onDeleteSavedQuery = async (savedQuery: SavedQuery) => { - cancelPendingListingRequest.current(); - setSavedQueries( - savedQueries.filter((currentSavedQuery) => currentSavedQuery.id !== savedQuery.id) - ); - - if (loadedSavedQuery && loadedSavedQuery.id === savedQuery.id) { - onClearSavedQuery(); - } - - await savedQueryService.deleteSavedQuery(savedQuery.id); - setActivePage(0); + const goToPage = (pageNumber: number) => { + setActivePage(pageNumber); }; const savedQueryPopoverButton = ( { - setIsOpen(!isOpen); - }} + onClick={handleTogglePopover} aria-label={i18n.translate('data.search.searchBar.savedQueryPopoverButtonText', { defaultMessage: 'See saved queries', })} @@ -159,11 +189,8 @@ export function SavedQueryManagementComponent({ key={savedQuery.id} savedQuery={savedQuery} isSelected={!!loadedSavedQuery && loadedSavedQuery.id === savedQuery.id} - onSelect={(savedQueryToSelect) => { - onLoad(savedQueryToSelect); - setIsOpen(false); - }} - onDelete={(savedQueryToDelete) => onDeleteSavedQuery(savedQueryToDelete)} + onSelect={handleSelect} + onDelete={handleDelete} showWriteOperations={!!showSaveQuery} /> )); @@ -175,9 +202,7 @@ export function SavedQueryManagementComponent({ id="savedQueryPopover" button={savedQueryPopoverButton} isOpen={isOpen} - closePopover={() => { - setIsOpen(false); - }} + closePopover={handleClosePopover} anchorPosition="downLeft" panelPaddingSize="none" buffer={-8} @@ -235,7 +260,7 @@ export function SavedQueryManagementComponent({ onSave()} + onClick={handleSave} aria-label={i18n.translate( 'data.search.searchBar.savedQueryPopoverSaveChangesButtonAriaLabel', { @@ -256,7 +281,7 @@ export function SavedQueryManagementComponent({ onSaveAsNew()} + onClick={handleSaveAsNew} aria-label={i18n.translate( 'data.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel', { @@ -280,7 +305,7 @@ export function SavedQueryManagementComponent({ onSave()} + onClick={handleSave} aria-label={i18n.translate( 'data.search.searchBar.savedQueryPopoverSaveButtonAriaLabel', { defaultMessage: 'Save a new saved query' } @@ -299,7 +324,7 @@ export function SavedQueryManagementComponent({ onClearSavedQuery()} + onClick={onClearSavedQuery} aria-label={i18n.translate( 'data.search.searchBar.savedQueryPopoverClearButtonAriaLabel', { defaultMessage: 'Clear current saved query' } diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx index f079715baec1c..a3cab1cfabd71 100644 --- a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx @@ -376,4 +376,63 @@ describe('QueryBar ', () => { expect(onSubmitQueryRef).toEqual(wrapper.find(SearchBar).props().onQuerySubmit); }); }); + + describe('SavedQueryManagementComponent state', () => { + test('popover should hidden when "Save current query" button was clicked', () => { + const KibanaWithStorageProvider = createKibanaContextProviderMock(); + + const Proxy = (props: QueryBarComponentProps) => ( + + + + + + ); + + const wrapper = mount( + + ); + + const isSavedQueryPopoverOpen = () => + wrapper.find('EuiPopover[id="savedQueryPopover"]').prop('isOpen'); + + expect(isSavedQueryPopoverOpen()).toBeFalsy(); + + wrapper + .find('button[data-test-subj="saved-query-management-popover-button"]') + .simulate('click'); + + expect(isSavedQueryPopoverOpen()).toBeTruthy(); + + wrapper.find('button[data-test-subj="saved-query-management-save-button"]').simulate('click'); + + expect(isSavedQueryPopoverOpen()).toBeFalsy(); + }); + }); }); From f5b280007f88be98255d75bcfc01ff032b999dbf Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 2 Jul 2020 15:06:32 -0700 Subject: [PATCH 12/59] [kbn/optimizer] only build specified themes (#70389) Co-authored-by: spalger Co-authored-by: Elastic Machine Co-authored-by: cchaos --- CONTRIBUTING.md | 8 +- packages/kbn-optimizer/README.md | 20 ++++ ...ng_constants.scss => _globals_v7dark.scss} | 0 .../ui/public/styles/_globals_v7light.scss | 1 + .../ui/public/styles/_globals_v8dark.scss | 1 + .../ui/public/styles/_globals_v8light.scss | 1 + packages/kbn-optimizer/src/common/index.ts | 1 + .../src/common/theme_tags.test.ts | 92 +++++++++++++++++++ .../kbn-optimizer/src/common/theme_tags.ts | 65 +++++++++++++ .../kbn-optimizer/src/common/worker_config.ts | 5 + .../basic_optimization.test.ts.snap | 6 +- .../basic_optimization.test.ts | 4 +- .../kbn-optimizer/src/log_optimizer_state.ts | 14 +-- .../src/optimizer/cache_keys.test.ts | 4 + .../src/optimizer/observe_stdio.test.ts | 49 ++++++++++ .../src/optimizer/observe_stdio.ts | 76 +++++++++++++++ .../src/optimizer/observe_worker.ts | 46 ++++------ .../src/optimizer/optimizer_config.test.ts | 39 +++++++- .../src/optimizer/optimizer_config.ts | 34 ++++++- .../src/optimizer/optimizer_state.ts | 2 +- .../kbn-optimizer/src/worker/run_compilers.ts | 2 +- .../kbn-optimizer/src/worker/theme_loader.ts | 41 +++++++-- .../src/worker/webpack.config.ts | 36 +++----- .../storybook_config/webpack.config.js | 2 +- packages/kbn-ui-shared-deps/entry.js | 9 -- packages/kbn-ui-shared-deps/theme.ts | 10 +- src/core/public/index.scss | 4 - .../core_plugins/kibana/public/index.scss | 2 - .../tests_bundle/public/index.scss | 2 - .../core_plugins/timelion/public/index.scss | 3 - .../server/sass/__fixtures__/index.scss | 2 - src/legacy/server/sass/build.js | 18 ++-- .../ui/public/styles/_globals_v7dark.scss | 12 +++ ...g_constants.scss => _globals_v7light.scss} | 7 +- .../ui/public/styles/_globals_v8dark.scss | 16 ++++ .../ui/public/styles/_globals_v8light.scss | 16 ++++ .../ui/ui_render/bootstrap/template.js.hbs | 3 +- src/legacy/ui/ui_render/ui_render_mixin.js | 6 +- src/plugins/tile_map/public/index.scss | 2 - .../canvas/.storybook/webpack.config.js | 3 +- x-pack/plugins/canvas/public/style/index.scss | 2 - .../shareable_runtime/webpack.config.js | 2 +- .../index_management/public/index.scss | 3 - x-pack/plugins/infra/public/index.scss | 3 - x-pack/plugins/maps/public/index.scss | 3 - .../plugins/ml/public/application/_index.scss | 3 - .../public/application/index.scss | 3 - .../plugins/transform/public/app/index.scss | 3 - .../public/application/_index.scss | 2 - 49 files changed, 545 insertions(+), 143 deletions(-) rename packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/{_styling_constants.scss => _globals_v7dark.scss} (100%) create mode 100644 packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7light.scss create mode 100644 packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8dark.scss create mode 100644 packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8light.scss create mode 100644 packages/kbn-optimizer/src/common/theme_tags.test.ts create mode 100644 packages/kbn-optimizer/src/common/theme_tags.ts create mode 100644 packages/kbn-optimizer/src/optimizer/observe_stdio.test.ts create mode 100644 packages/kbn-optimizer/src/optimizer/observe_stdio.ts create mode 100644 src/legacy/ui/public/styles/_globals_v7dark.scss rename src/legacy/ui/public/styles/{_styling_constants.scss => _globals_v7light.scss} (59%) create mode 100644 src/legacy/ui/public/styles/_globals_v8dark.scss create mode 100644 src/legacy/ui/public/styles/_globals_v8light.scss diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a7345f4b2897b..a0aeed7a34949 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -436,7 +436,7 @@ We are still to develop a proper process to accept any contributed translations. When writing a new component, create a sibling SASS file of the same name and import directly into the JS/TS component file. Doing so ensures the styles are never separated or lost on import and allows for better modularization (smaller individual plugin asset footprint). -Any JavaScript (or TypeScript) file that imports SASS (.scss) files will automatically build with the [EUI](https://elastic.github.io/eui/#/guidelines/sass) & Kibana invisibles (SASS variables, mixins, functions) from the [`styling_constants.scss` file](https://github.com/elastic/kibana/blob/master/src/legacy/ui/public/styles/_styling_constants.scss). However, any Legacy (file path includes `/legacy`) files will not. +All SASS (.scss) files will automatically build with the [EUI](https://elastic.github.io/eui/#/guidelines/sass) & Kibana invisibles (SASS variables, mixins, functions) from the [`globals_[theme].scss` file](src/legacy/ui/public/styles/_globals_v7light.scss). **Example:** @@ -679,15 +679,15 @@ Part of this process only applies to maintainers, since it requires access to Gi Kibana publishes [Release Notes](https://www.elastic.co/guide/en/kibana/current/release-notes.html) for major and minor releases. The Release Notes summarize what the PRs accomplish in language that is meaningful to users. To generate the Release Notes, the team runs a script against this repo to collect the merged PRs against the release. #### Create the Release Notes text -The text that appears in the Release Notes is pulled directly from your PR title, or a single paragraph of text that you specify in the PR description. +The text that appears in the Release Notes is pulled directly from your PR title, or a single paragraph of text that you specify in the PR description. To use a single paragraph of text, enter `Release note:` or a `## Release note` header in the PR description, followed by your text. For example, refer to this [PR](https://github.com/elastic/kibana/pull/65796) that uses the `## Release note` header. When you create the Release Notes text, use the following best practices: -* Use present tense. +* Use present tense. * Use sentence case. * When you create a feature PR, start with `Adds`. -* When you create an enhancement PR, start with `Improves`. +* When you create an enhancement PR, start with `Improves`. * When you create a bug fix PR, start with `Fixes`. * When you create a deprecation PR, start with `Deprecates`. diff --git a/packages/kbn-optimizer/README.md b/packages/kbn-optimizer/README.md index 9ff0f56344274..5d5c5e3b6eb74 100644 --- a/packages/kbn-optimizer/README.md +++ b/packages/kbn-optimizer/README.md @@ -42,6 +42,26 @@ When a directory is listed in the "extraPublicDirs" it will always be included i Any import in a bundle which resolves into another bundles "context" directory, ie `src/plugins/*`, must map explicitly to a "public dir" exported by that plugin. If the resolved import is not in the list of public dirs an error will be thrown and the optimizer will fail to build that bundle until the error is fixed. +## Themes + +SASS imports in bundles are automatically converted to CSS for one or more themes. In development we build the `v7light` and `v7dark` themes by default to improve build performance. When producing distributable bundles the default shifts to `*` so that the distributable bundles will include all themes, preventing the bundles from needing to be rebuilt when users change the active theme in Kibana's advanced settings. + +To customize the themes that are built for development you can specify the `KBN_OPTIMIZER_THEMES` environment variable to one or more theme tags, or use `*` to build styles for all themes. Unfortunately building more than one theme significantly impacts build performance, so try to be strategic about which themes you build. + +Currently supported theme tags: `v7light`, `v7dark`, `v8light`, `v8dark` + +Examples: +```sh +# start Kibana with only a single theme +KBN_OPTIMIZER_THEMES=v7light yarn start + +# start Kibana with dark themes for version 7 and 8 +KBN_OPTIMIZER_THEMES=v7dark,v8dark yarn start + +# start Kibana with all the themes +KBN_OPTIMIZER_THEMES=* yarn start +``` + ## API To run the optimizer from code, you can import the [`OptimizerConfig`][OptimizerConfig] class and [`runOptimizer`][Optimizer] function. Create an [`OptimizerConfig`][OptimizerConfig] instance by calling it's static `create()` method with some options, then pass it to the [`runOptimizer`][Optimizer] function. `runOptimizer()` returns an observable of update objects, which are summaries of the optimizer state plus an optional `event` property which describes the internal events occuring and may be of use. You can use the [`logOptimizerState()`][LogOptimizerState] helper to write the relevant bits of state to a tooling log or checkout it's implementation to see how the internal events like [`WorkerStdio`][ObserveWorker] and [`WorkerStarted`][ObserveWorker] are used. diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_styling_constants.scss b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7dark.scss similarity index 100% rename from packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_styling_constants.scss rename to packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7dark.scss diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7light.scss b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7light.scss new file mode 100644 index 0000000000000..63beb9927b9f5 --- /dev/null +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v7light.scss @@ -0,0 +1 @@ +$globalStyleConstant: 11; diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8dark.scss b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8dark.scss new file mode 100644 index 0000000000000..4040cab1878fc --- /dev/null +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8dark.scss @@ -0,0 +1 @@ +$globalStyleConstant: 12; diff --git a/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8light.scss b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8light.scss new file mode 100644 index 0000000000000..3918413c06863 --- /dev/null +++ b/packages/kbn-optimizer/src/__fixtures__/mock_repo/src/legacy/ui/public/styles/_globals_v8light.scss @@ -0,0 +1 @@ +$globalStyleConstant: 13; diff --git a/packages/kbn-optimizer/src/common/index.ts b/packages/kbn-optimizer/src/common/index.ts index 7d021a5ee7847..89cde2c1cd064 100644 --- a/packages/kbn-optimizer/src/common/index.ts +++ b/packages/kbn-optimizer/src/common/index.ts @@ -29,3 +29,4 @@ export * from './array_helpers'; export * from './event_stream_helpers'; export * from './disallowed_syntax_plugin'; export * from './parse_path'; +export * from './theme_tags'; diff --git a/packages/kbn-optimizer/src/common/theme_tags.test.ts b/packages/kbn-optimizer/src/common/theme_tags.test.ts new file mode 100644 index 0000000000000..019a9b7bdee3e --- /dev/null +++ b/packages/kbn-optimizer/src/common/theme_tags.test.ts @@ -0,0 +1,92 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { parseThemeTags } from './theme_tags'; + +it('returns default tags when passed undefined', () => { + expect(parseThemeTags()).toMatchInlineSnapshot(` + Array [ + "v7dark", + "v7light", + ] + `); +}); + +it('returns all tags when passed *', () => { + expect(parseThemeTags('*')).toMatchInlineSnapshot(` + Array [ + "v7dark", + "v7light", + "v8dark", + "v8light", + ] + `); +}); + +it('returns specific tag when passed a single value', () => { + expect(parseThemeTags('v8light')).toMatchInlineSnapshot(` + Array [ + "v8light", + ] + `); +}); + +it('returns specific tags when passed a comma separated list', () => { + expect(parseThemeTags('v8light, v7dark,v7light')).toMatchInlineSnapshot(` + Array [ + "v7dark", + "v7light", + "v8light", + ] + `); +}); + +it('returns specific tags when passed an array', () => { + expect(parseThemeTags(['v8light', 'v7light'])).toMatchInlineSnapshot(` + Array [ + "v7light", + "v8light", + ] + `); +}); + +it('throws when an invalid tag is in the array', () => { + expect(() => parseThemeTags(['v8light', 'v7light', 'bar'])).toThrowErrorMatchingInlineSnapshot( + `"Invalid theme tags [bar], options: [v7dark, v7light, v8dark, v8light]"` + ); +}); + +it('throws when an invalid tags in comma separated list', () => { + expect(() => parseThemeTags('v8light ,v7light,bar,box ')).toThrowErrorMatchingInlineSnapshot( + `"Invalid theme tags [bar, box], options: [v7dark, v7light, v8dark, v8light]"` + ); +}); + +it('returns tags in alphabetical order', () => { + const tags = parseThemeTags(['v7light', 'v8light']); + expect(tags).toEqual(tags.slice().sort((a, b) => a.localeCompare(b))); +}); + +it('returns an immutable array', () => { + expect(() => { + const tags = parseThemeTags('v8light'); + // @ts-expect-error + tags.push('foo'); + }).toThrowErrorMatchingInlineSnapshot(`"Cannot add property 1, object is not extensible"`); +}); diff --git a/packages/kbn-optimizer/src/common/theme_tags.ts b/packages/kbn-optimizer/src/common/theme_tags.ts new file mode 100644 index 0000000000000..27b5e12b807a8 --- /dev/null +++ b/packages/kbn-optimizer/src/common/theme_tags.ts @@ -0,0 +1,65 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ascending } from './array_helpers'; + +const tags = (...themeTags: string[]) => + Object.freeze(themeTags.sort(ascending((tag) => tag)) as ThemeTag[]); + +const validTag = (tag: any): tag is ThemeTag => ALL_THEMES.includes(tag); +const isArrayOfStrings = (input: unknown): input is string[] => + Array.isArray(input) && input.every((v) => typeof v === 'string'); + +export type ThemeTags = readonly ThemeTag[]; +export type ThemeTag = 'v7light' | 'v7dark' | 'v8light' | 'v8dark'; +export const DEFAULT_THEMES = tags('v7light', 'v7dark'); +export const ALL_THEMES = tags('v7light', 'v7dark', 'v8light', 'v8dark'); + +export function parseThemeTags(input?: any): ThemeTags { + if (!input) { + return DEFAULT_THEMES; + } + + if (input === '*') { + return ALL_THEMES; + } + + if (typeof input === 'string') { + input = input.split(',').map((tag) => tag.trim()); + } + + if (!isArrayOfStrings(input)) { + throw new Error(`Invalid theme tags, must be an array of strings`); + } + + if (!input.length) { + throw new Error( + `Invalid theme tags, you must specify at least one of [${ALL_THEMES.join(', ')}]` + ); + } + + const invalidTags = input.filter((t) => !validTag(t)); + if (invalidTags.length) { + throw new Error( + `Invalid theme tags [${invalidTags.join(', ')}], options: [${ALL_THEMES.join(', ')}]` + ); + } + + return tags(...input); +} diff --git a/packages/kbn-optimizer/src/common/worker_config.ts b/packages/kbn-optimizer/src/common/worker_config.ts index a1ab51ee97c23..8726b3452ff1e 100644 --- a/packages/kbn-optimizer/src/common/worker_config.ts +++ b/packages/kbn-optimizer/src/common/worker_config.ts @@ -20,11 +20,13 @@ import Path from 'path'; import { UnknownVals } from './ts_helpers'; +import { ThemeTags, parseThemeTags } from './theme_tags'; export interface WorkerConfig { readonly repoRoot: string; readonly watch: boolean; readonly dist: boolean; + readonly themeTags: ThemeTags; readonly cache: boolean; readonly profileWebpack: boolean; readonly browserslistEnv: string; @@ -80,6 +82,8 @@ export function parseWorkerConfig(json: string): WorkerConfig { throw new Error('`browserslistEnv` must be a string'); } + const themes = parseThemeTags(parsed.themeTags); + return { repoRoot, cache, @@ -88,6 +92,7 @@ export function parseWorkerConfig(json: string): WorkerConfig { profileWebpack, optimizerCacheKey, browserslistEnv, + themeTags: themes, }; } catch (error) { throw new Error(`unable to parse worker config: ${error.message}`); diff --git a/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap b/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap index b6b0973f0d539..211cfac3806ad 100644 --- a/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap +++ b/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap @@ -58,11 +58,15 @@ OptimizerConfig { ], "profileWebpack": false, "repoRoot": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo, + "themeTags": Array [ + "v7dark", + "v7light", + ], "watch": false, } `; -exports[`prepares assets for distribution: bar bundle 1`] = `"(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value===\\"object\\"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,\\"default\\",{enumerable:true,value:value});if(mode&2&&typeof value!=\\"string\\")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module[\\"default\\"]}:function getModuleExports(){return module};__webpack_require__.d(getter,\\"a\\",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p=\\"\\";return __webpack_require__(__webpack_require__.s=5)})([function(module,exports,__webpack_require__){\\"use strict\\";var isOldIE=function isOldIE(){var memo;return function memorize(){if(typeof memo===\\"undefined\\"){memo=Boolean(window&&document&&document.all&&!window.atob)}return memo}}();var getTarget=function getTarget(){var memo={};return function memorize(target){if(typeof memo[target]===\\"undefined\\"){var styleTarget=document.querySelector(target);if(window.HTMLIFrameElement&&styleTarget instanceof window.HTMLIFrameElement){try{styleTarget=styleTarget.contentDocument.head}catch(e){styleTarget=null}}memo[target]=styleTarget}return memo[target]}}();var stylesInDom=[];function getIndexByIdentifier(identifier){var result=-1;for(var i=0;i { tap((state) => { if (state.event?.type === 'worker stdio') { // eslint-disable-next-line no-console - console.log('worker', state.event.stream, state.event.chunk.toString('utf8')); + console.log('worker', state.event.stream, state.event.line); } }), toArray() @@ -226,7 +226,7 @@ const expectFileMatchesSnapshotWithCompression = (filePath: string, snapshotLabe // Verify the brotli variant matches expect( - // @ts-ignore @types/node is missing the brotli functions + // @ts-expect-error @types/node is missing the brotli functions Zlib.brotliDecompressSync( Fs.readFileSync(Path.resolve(MOCK_REPO_DIR, `${filePath}.br`)) ).toString() diff --git a/packages/kbn-optimizer/src/log_optimizer_state.ts b/packages/kbn-optimizer/src/log_optimizer_state.ts index cbec159bd27a0..23767be610da4 100644 --- a/packages/kbn-optimizer/src/log_optimizer_state.ts +++ b/packages/kbn-optimizer/src/log_optimizer_state.ts @@ -24,7 +24,7 @@ import { tap } from 'rxjs/operators'; import { OptimizerConfig } from './optimizer'; import { OptimizerUpdate$ } from './run_optimizer'; -import { CompilerMsg, pipeClosure } from './common'; +import { CompilerMsg, pipeClosure, ALL_THEMES } from './common'; export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) { return pipeClosure((update$: OptimizerUpdate$) => { @@ -37,12 +37,7 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) { const { event, state } = update; if (event?.type === 'worker stdio') { - const chunk = event.chunk.toString('utf8'); - log.warning( - `worker`, - event.stream, - chunk.slice(0, chunk.length - (chunk.endsWith('\n') ? 1 : 0)) - ); + log.warning(`worker`, event.stream, event.line); } if (event?.type === 'bundle not cached') { @@ -76,6 +71,11 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) { if (!loggedInit) { loggedInit = true; log.info(`initialized, ${state.offlineBundles.length} bundles cached`); + if (config.themeTags.length !== ALL_THEMES.length) { + log.warning( + `only building [${config.themeTags}] themes, customize with the KBN_OPTIMIZER_THEMES environment variable` + ); + } } return; } diff --git a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts index 9d7f1709506f9..47d01347a8f7d 100644 --- a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts +++ b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts @@ -103,6 +103,10 @@ describe('getOptimizerCacheKey()', () => { "dist": false, "optimizerCacheKey": "♻", "repoRoot": , + "themeTags": Array [ + "v7dark", + "v7light", + ], }, } `); diff --git a/packages/kbn-optimizer/src/optimizer/observe_stdio.test.ts b/packages/kbn-optimizer/src/optimizer/observe_stdio.test.ts new file mode 100644 index 0000000000000..9bf8f9db1fe45 --- /dev/null +++ b/packages/kbn-optimizer/src/optimizer/observe_stdio.test.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Readable } from 'stream'; + +import { toArray } from 'rxjs/operators'; + +import { observeStdio$ } from './observe_stdio'; + +it('notifies on every line, uncluding partial content at the end without a newline', async () => { + const chunks = [`foo\nba`, `r\nb`, `az`]; + + await expect( + observeStdio$( + new Readable({ + read() { + this.push(chunks.shift()!); + if (!chunks.length) { + this.push(null); + } + }, + }) + ) + .pipe(toArray()) + .toPromise() + ).resolves.toMatchInlineSnapshot(` + Array [ + "foo", + "bar", + "baz", + ] + `); +}); diff --git a/packages/kbn-optimizer/src/optimizer/observe_stdio.ts b/packages/kbn-optimizer/src/optimizer/observe_stdio.ts new file mode 100644 index 0000000000000..e8daecef8e0dd --- /dev/null +++ b/packages/kbn-optimizer/src/optimizer/observe_stdio.ts @@ -0,0 +1,76 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Readable } from 'stream'; +import * as Rx from 'rxjs'; + +// match newline characters followed either by a non-space character or another newline +const NEWLINE = /\r?\n/; + +/** + * Observe a readable stdio stream and emit the entire lines + * of text produced, completing once the stdio stream emits "end" + * and erroring if it emits "error". + */ +export function observeStdio$(stream: Readable) { + return new Rx.Observable((subscriber) => { + let buffer = ''; + + subscriber.add( + Rx.fromEvent(stream, 'data').subscribe({ + next(chunk) { + buffer += chunk.toString('utf8'); + + while (true) { + const match = NEWLINE.exec(buffer); + if (!match) { + break; + } + + const multilineChunk = buffer.slice(0, match.index); + buffer = buffer.slice(match.index + match[0].length); + subscriber.next(multilineChunk); + } + }, + }) + ); + + const flush = () => { + while (buffer.length && !subscriber.closed) { + const line = buffer; + buffer = ''; + subscriber.next(line); + } + }; + + subscriber.add( + Rx.fromEvent(stream, 'end').subscribe(() => { + flush(); + subscriber.complete(); + }) + ); + + subscriber.add( + Rx.fromEvent(stream, 'error').subscribe((error) => { + flush(); + subscriber.error(error); + }) + ); + }); +} diff --git a/packages/kbn-optimizer/src/optimizer/observe_worker.ts b/packages/kbn-optimizer/src/optimizer/observe_worker.ts index fef3efc13a516..31b34bd5c5938 100644 --- a/packages/kbn-optimizer/src/optimizer/observe_worker.ts +++ b/packages/kbn-optimizer/src/optimizer/observe_worker.ts @@ -17,7 +17,6 @@ * under the License. */ -import { Readable } from 'stream'; import { inspect } from 'util'; import execa from 'execa'; @@ -26,12 +25,13 @@ import { map, takeUntil, first, ignoreElements } from 'rxjs/operators'; import { isWorkerMsg, WorkerConfig, WorkerMsg, Bundle, BundleRefs } from '../common'; +import { observeStdio$ } from './observe_stdio'; import { OptimizerConfig } from './optimizer_config'; export interface WorkerStdio { type: 'worker stdio'; stream: 'stdout' | 'stderr'; - chunk: Buffer; + line: string; } export interface WorkerStarted { @@ -99,28 +99,6 @@ function usingWorkerProc( ); } -function observeStdio$(stream: Readable, name: WorkerStdio['stream']) { - return Rx.fromEvent(stream, 'data').pipe( - takeUntil( - Rx.race( - Rx.fromEvent(stream, 'end'), - Rx.fromEvent(stream, 'error').pipe( - map((error) => { - throw error; - }) - ) - ) - ), - map( - (chunk): WorkerStdio => ({ - type: 'worker stdio', - chunk, - stream: name, - }) - ) - ); -} - /** * We used to pass configuration to the worker as JSON encoded arguments, but they * grew too large for argv, especially on Windows, so we had to move to an async init @@ -186,8 +164,24 @@ export function observeWorker( type: 'worker started', bundles, }), - observeStdio$(proc.stdout, 'stdout'), - observeStdio$(proc.stderr, 'stderr'), + observeStdio$(proc.stdout).pipe( + map( + (line): WorkerStdio => ({ + type: 'worker stdio', + line, + stream: 'stdout', + }) + ) + ), + observeStdio$(proc.stderr).pipe( + map( + (line): WorkerStdio => ({ + type: 'worker stdio', + line, + stream: 'stderr', + }) + ) + ), Rx.fromEvent<[unknown]>(proc, 'message') .pipe( // validate the messages from the process diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts index d4152133f289d..5b46d67479fd5 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts @@ -20,6 +20,7 @@ jest.mock('./assign_bundles_to_workers.ts'); jest.mock('./kibana_platform_plugins.ts'); jest.mock('./get_plugin_bundles.ts'); +jest.mock('../common/theme_tags.ts'); import Path from 'path'; import Os from 'os'; @@ -27,6 +28,7 @@ import Os from 'os'; import { REPO_ROOT, createAbsolutePathSerializer } from '@kbn/dev-utils'; import { OptimizerConfig } from './optimizer_config'; +import { parseThemeTags } from '../common'; jest.spyOn(Os, 'cpus').mockReturnValue(['foo'] as any); @@ -35,6 +37,7 @@ expect.addSnapshotSerializer(createAbsolutePathSerializer()); beforeEach(() => { delete process.env.KBN_OPTIMIZER_MAX_WORKERS; delete process.env.KBN_OPTIMIZER_NO_CACHE; + delete process.env.KBN_OPTIMIZER_THEMES; jest.clearAllMocks(); }); @@ -81,6 +84,26 @@ describe('OptimizerConfig::parseOptions()', () => { }).toThrowErrorMatchingInlineSnapshot(`"worker count must be a number"`); }); + it('defaults to * theme when dist = true', () => { + OptimizerConfig.parseOptions({ + repoRoot: REPO_ROOT, + dist: true, + }); + + expect(parseThemeTags).toBeCalledWith('*'); + }); + + it('defaults to KBN_OPTIMIZER_THEMES when dist = false', () => { + process.env.KBN_OPTIMIZER_THEMES = 'foo'; + + OptimizerConfig.parseOptions({ + repoRoot: REPO_ROOT, + dist: false, + }); + + expect(parseThemeTags).toBeCalledWith('foo'); + }); + it('applies defaults', () => { expect( OptimizerConfig.parseOptions({ @@ -102,6 +125,7 @@ describe('OptimizerConfig::parseOptions()', () => { ], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -127,6 +151,7 @@ describe('OptimizerConfig::parseOptions()', () => { ], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -154,6 +179,7 @@ describe('OptimizerConfig::parseOptions()', () => { ], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -178,6 +204,7 @@ describe('OptimizerConfig::parseOptions()', () => { ], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -201,6 +228,7 @@ describe('OptimizerConfig::parseOptions()', () => { ], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -222,6 +250,7 @@ describe('OptimizerConfig::parseOptions()', () => { "pluginScanDirs": Array [], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -243,6 +272,7 @@ describe('OptimizerConfig::parseOptions()', () => { "pluginScanDirs": Array [], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -264,6 +294,7 @@ describe('OptimizerConfig::parseOptions()', () => { "pluginScanDirs": Array [], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -286,6 +317,7 @@ describe('OptimizerConfig::parseOptions()', () => { "pluginScanDirs": Array [], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -308,6 +340,7 @@ describe('OptimizerConfig::parseOptions()', () => { "pluginScanDirs": Array [], "profileWebpack": false, "repoRoot": , + "themeTags": undefined, "watch": false, } `); @@ -346,6 +379,7 @@ describe('OptimizerConfig::create()', () => { pluginScanDirs: Symbol('parsed plugin scan dirs'), repoRoot: Symbol('parsed repo root'), watch: Symbol('parsed watch'), + themeTags: Symbol('theme tags'), inspectWorkers: Symbol('parsed inspect workers'), profileWebpack: Symbol('parsed profile webpack'), })); @@ -369,6 +403,7 @@ describe('OptimizerConfig::create()', () => { "plugins": Symbol(new platform plugins), "profileWebpack": Symbol(parsed profile webpack), "repoRoot": Symbol(parsed repo root), + "themeTags": Symbol(theme tags), "watch": Symbol(parsed watch), } `); @@ -385,7 +420,7 @@ describe('OptimizerConfig::create()', () => { [Window], ], "invocationCallOrder": Array [ - 7, + 21, ], "results": Array [ Object { @@ -408,7 +443,7 @@ describe('OptimizerConfig::create()', () => { [Window], ], "invocationCallOrder": Array [ - 8, + 22, ], "results": Array [ Object { diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_config.ts b/packages/kbn-optimizer/src/optimizer/optimizer_config.ts index c9e9b3ad01ccc..7757004139d0d 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_config.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_config.ts @@ -20,7 +20,14 @@ import Path from 'path'; import Os from 'os'; -import { Bundle, WorkerConfig, CacheableWorkerConfig } from '../common'; +import { + Bundle, + WorkerConfig, + CacheableWorkerConfig, + ThemeTag, + ThemeTags, + parseThemeTags, +} from '../common'; import { findKibanaPlatformPlugins, KibanaPlatformPlugin } from './kibana_platform_plugins'; import { getPluginBundles } from './get_plugin_bundles'; @@ -73,6 +80,18 @@ interface Options { /** flag that causes the core bundle to be built along with plugins */ includeCoreBundle?: boolean; + + /** + * style themes that sass files will be converted to, the correct style will be + * loaded in the browser automatically by checking the global `__kbnThemeTag__`. + * Specifying additional styles increases build time. + * + * Defaults: + * - "*" when building the dist + * - comma separated list of themes in the `KBN_OPTIMIZER_THEMES` env var + * - "k7light" + */ + themes?: ThemeTag | '*' | ThemeTag[]; } interface ParsedOptions { @@ -86,6 +105,7 @@ interface ParsedOptions { pluginScanDirs: string[]; inspectWorkers: boolean; includeCoreBundle: boolean; + themeTags: ThemeTags; } export class OptimizerConfig { @@ -139,6 +159,10 @@ export class OptimizerConfig { throw new TypeError('worker count must be a number'); } + const themeTags = parseThemeTags( + options.themes || (dist ? '*' : process.env.KBN_OPTIMIZER_THEMES) + ); + return { watch, dist, @@ -150,6 +174,7 @@ export class OptimizerConfig { pluginPaths, inspectWorkers, includeCoreBundle, + themeTags, }; } @@ -181,7 +206,8 @@ export class OptimizerConfig { options.repoRoot, options.maxWorkerCount, options.dist, - options.profileWebpack + options.profileWebpack, + options.themeTags ); } @@ -194,7 +220,8 @@ export class OptimizerConfig { public readonly repoRoot: string, public readonly maxWorkerCount: number, public readonly dist: boolean, - public readonly profileWebpack: boolean + public readonly profileWebpack: boolean, + public readonly themeTags: ThemeTags ) {} getWorkerConfig(optimizerCacheKey: unknown): WorkerConfig { @@ -205,6 +232,7 @@ export class OptimizerConfig { repoRoot: this.repoRoot, watch: this.watch, optimizerCacheKey, + themeTags: this.themeTags, browserslistEnv: this.dist ? 'production' : process.env.BROWSERSLIST_ENV || 'dev', }; } diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_state.ts b/packages/kbn-optimizer/src/optimizer/optimizer_state.ts index 1572f459e6ee5..09f8ca10c6181 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_state.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_state.ts @@ -127,7 +127,7 @@ export function createOptimizerStateSummarizer( } if (event.type === 'worker stdio' || event.type === 'worker started') { - // same state, but updated to the event is shared externally + // same state, but updated so the event is shared externally return createOptimizerState(state); } diff --git a/packages/kbn-optimizer/src/worker/run_compilers.ts b/packages/kbn-optimizer/src/worker/run_compilers.ts index de5e9372e9e7a..ca7673748bde9 100644 --- a/packages/kbn-optimizer/src/worker/run_compilers.ts +++ b/packages/kbn-optimizer/src/worker/run_compilers.ts @@ -77,7 +77,7 @@ const observeCompiler = ( */ const complete$ = Rx.fromEventPattern((cb) => done.tap(PLUGIN_NAME, cb)).pipe( maybeMap((stats) => { - // @ts-ignore not included in types, but it is real https://github.com/webpack/webpack/blob/ab4fa8ddb3f433d286653cd6af7e3aad51168649/lib/Watching.js#L58 + // @ts-expect-error not included in types, but it is real https://github.com/webpack/webpack/blob/ab4fa8ddb3f433d286653cd6af7e3aad51168649/lib/Watching.js#L58 if (stats.compilation.needAdditionalPass) { return undefined; } diff --git a/packages/kbn-optimizer/src/worker/theme_loader.ts b/packages/kbn-optimizer/src/worker/theme_loader.ts index 5d02462ef1bb8..f2f685bde65d9 100644 --- a/packages/kbn-optimizer/src/worker/theme_loader.ts +++ b/packages/kbn-optimizer/src/worker/theme_loader.ts @@ -17,16 +17,43 @@ * under the License. */ +import { stringifyRequest, getOptions } from 'loader-utils'; import webpack from 'webpack'; -import { stringifyRequest } from 'loader-utils'; +import { parseThemeTags, ALL_THEMES, ThemeTag } from '../common'; + +const getVersion = (tag: ThemeTag) => (tag.includes('v7') ? 7 : 8); +const getIsDark = (tag: ThemeTag) => tag.includes('dark'); +const compare = (a: ThemeTag, b: ThemeTag) => + (getVersion(a) === getVersion(b) ? 1 : 0) + (getIsDark(a) === getIsDark(b) ? 1 : 0); // eslint-disable-next-line import/no-default-export export default function (this: webpack.loader.LoaderContext) { + this.cacheable(true); + + const options = getOptions(this); + const bundleId: string = options.bundleId!; + const themeTags = parseThemeTags(options.themeTags); + + const cases = ALL_THEMES.map((tag) => { + if (themeTags.includes(tag)) { + return ` + case '${tag}': + return require(${stringifyRequest(this, `${this.resourcePath}?${tag}`)});`; + } + + const fallback = themeTags + .slice() + .sort((a, b) => compare(b, tag) - compare(a, tag)) + .shift()!; + + const message = `SASS files in [${bundleId}] were not built for theme [${tag}]. Styles were compiled using the [${fallback}] theme instead to keep Kibana somewhat usable. Please adjust the advanced settings to make use of [${themeTags}] or make sure the KBN_OPTIMIZER_THEMES environment variable includes [${tag}] in a comma separated list of themes you want to compile. You can also set it to "*" to build all themes.`; + return ` + case '${tag}': + console.error(new Error(${JSON.stringify(message)})); + return require(${stringifyRequest(this, `${this.resourcePath}?${fallback}`)})`; + }).join('\n'); + return ` -if (window.__kbnDarkMode__) { - require(${stringifyRequest(this, `${this.resourcePath}?dark`)}) -} else { - require(${stringifyRequest(this, `${this.resourcePath}?light`)}); -} - `; +switch (window.__kbnThemeTag__) {${cases} +}`; } diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index 11f5544cd9274..aaea70d12c60d 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -21,11 +21,10 @@ import Path from 'path'; import { stringifyRequest } from 'loader-utils'; import webpack from 'webpack'; -// @ts-ignore +// @ts-expect-error import TerserPlugin from 'terser-webpack-plugin'; -// @ts-ignore +// @ts-expect-error import webpackMerge from 'webpack-merge'; -// @ts-ignore import { CleanWebpackPlugin } from 'clean-webpack-plugin'; import CompressionPlugin from 'compression-webpack-plugin'; import * as UiSharedDeps from '@kbn/ui-shared-deps'; @@ -134,8 +133,8 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: test: /\.scss$/, exclude: /node_modules/, oneOf: [ - { - resourceQuery: /dark|light/, + ...worker.themeTags.map((theme) => ({ + resourceQuery: `?${theme}`, use: [ { loader: 'style-loader', @@ -196,34 +195,27 @@ export function getWebpackConfig(bundle: Bundle, bundleRefs: BundleRefs, worker: loaderContext, Path.resolve( worker.repoRoot, - 'src/legacy/ui/public/styles/_styling_constants.scss' + `src/legacy/ui/public/styles/_globals_${theme}.scss` ) )};\n`; }, webpackImporter: false, implementation: require('node-sass'), - sassOptions(loaderContext: webpack.loader.LoaderContext) { - const darkMode = loaderContext.resourceQuery === '?dark'; - - return { - outputStyle: 'nested', - includePaths: [Path.resolve(worker.repoRoot, 'node_modules')], - sourceMapRoot: `/${bundle.type}:${bundle.id}`, - importer: (url: string) => { - if (darkMode && url.includes('eui_colors_light')) { - return { file: url.replace('eui_colors_light', 'eui_colors_dark') }; - } - - return { file: url }; - }, - }; + sassOptions: { + outputStyle: 'nested', + includePaths: [Path.resolve(worker.repoRoot, 'node_modules')], + sourceMapRoot: `/${bundle.type}:${bundle.id}`, }, }, }, ], - }, + })), { loader: require.resolve('./theme_loader'), + options: { + bundleId: bundle.id, + themeTags: worker.themeTags, + }, }, ], }, diff --git a/packages/kbn-storybook/storybook_config/webpack.config.js b/packages/kbn-storybook/storybook_config/webpack.config.js index caeffaabea62b..b2df4f40d4fbe 100644 --- a/packages/kbn-storybook/storybook_config/webpack.config.js +++ b/packages/kbn-storybook/storybook_config/webpack.config.js @@ -122,7 +122,7 @@ module.exports = async ({ config }) => { prependData(loaderContext) { return `@import ${stringifyRequest( loaderContext, - resolve(REPO_ROOT, 'src/legacy/ui/public/styles/_styling_constants.scss') + resolve(REPO_ROOT, 'src/legacy/ui/public/styles/_globals_v7light.scss') )};\n`; }, sassOptions: { diff --git a/packages/kbn-ui-shared-deps/entry.js b/packages/kbn-ui-shared-deps/entry.js index 02b64157686c1..0f981f3d07610 100644 --- a/packages/kbn-ui-shared-deps/entry.js +++ b/packages/kbn-ui-shared-deps/entry.js @@ -51,15 +51,6 @@ export const ElasticEui = require('@elastic/eui'); export const ElasticEuiLibServices = require('@elastic/eui/lib/services'); export const ElasticEuiLibServicesFormat = require('@elastic/eui/lib/services/format'); export const ElasticEuiChartsTheme = require('@elastic/eui/dist/eui_charts_theme'); -export let ElasticEuiLightTheme; -export let ElasticEuiDarkTheme; -if (window.__kbnThemeVersion__ === 'v7') { - ElasticEuiLightTheme = require('@elastic/eui/dist/eui_theme_light.json'); - ElasticEuiDarkTheme = require('@elastic/eui/dist/eui_theme_dark.json'); -} else { - ElasticEuiLightTheme = require('@elastic/eui/dist/eui_theme_amsterdam_light.json'); - ElasticEuiDarkTheme = require('@elastic/eui/dist/eui_theme_amsterdam_dark.json'); -} import * as Theme from './theme.ts'; export { Theme }; diff --git a/packages/kbn-ui-shared-deps/theme.ts b/packages/kbn-ui-shared-deps/theme.ts index ca4714779d39e..4b2758516fc26 100644 --- a/packages/kbn-ui-shared-deps/theme.ts +++ b/packages/kbn-ui-shared-deps/theme.ts @@ -23,9 +23,15 @@ const globals: any = typeof window === 'undefined' ? {} : window; export type Theme = typeof LightTheme; +// in the Kibana app we can rely on this global being defined, but in +// some cases (like jest, or karma tests) the global is undefined +export const tag: string = globals.__kbnThemeTag__ || 'v7light'; +export const version = tag.startsWith('v7') ? 7 : 8; +export const darkMode = tag.endsWith('dark'); + export let euiLightVars: Theme; export let euiDarkVars: Theme; -if (globals.__kbnThemeVersion__ === 'v7') { +if (version === 7) { euiLightVars = require('@elastic/eui/dist/eui_theme_light.json'); euiDarkVars = require('@elastic/eui/dist/eui_theme_dark.json'); } else { @@ -37,7 +43,7 @@ if (globals.__kbnThemeVersion__ === 'v7') { * EUI Theme vars that automatically adjust to light/dark theme */ export let euiThemeVars: Theme; -if (globals.__kbnDarkTheme__) { +if (darkMode) { euiThemeVars = euiDarkVars; } else { euiThemeVars = euiLightVars; diff --git a/src/core/public/index.scss b/src/core/public/index.scss index 4be46899cff67..87825350b4e98 100644 --- a/src/core/public/index.scss +++ b/src/core/public/index.scss @@ -1,7 +1,3 @@ -// This file is built by both the legacy and KP build systems so we need to -// import this explicitly -@import '../../legacy/ui/public/styles/_styling_constants'; - @import './core'; @import './chrome/index'; @import './overlays/index'; diff --git a/src/legacy/core_plugins/kibana/public/index.scss b/src/legacy/core_plugins/kibana/public/index.scss index e9810a747c8c7..7de0c8fc15f94 100644 --- a/src/legacy/core_plugins/kibana/public/index.scss +++ b/src/legacy/core_plugins/kibana/public/index.scss @@ -1,5 +1,3 @@ -@import 'src/legacy/ui/public/styles/styling_constants'; - // Elastic charts @import '@elastic/charts/dist/theme'; @import '@elastic/eui/src/themes/charts/theme'; diff --git a/src/legacy/core_plugins/tests_bundle/public/index.scss b/src/legacy/core_plugins/tests_bundle/public/index.scss index 8020cef8d8492..d8dbf8d6dc885 100644 --- a/src/legacy/core_plugins/tests_bundle/public/index.scss +++ b/src/legacy/core_plugins/tests_bundle/public/index.scss @@ -1,5 +1,3 @@ -@import 'src/legacy/ui/public/styles/styling_constants'; - // This file pulls some styles of NP plugins into the legacy test stylesheet // so they are available for karma browser tests. @import '../../../../plugins/vis_type_vislib/public/index'; diff --git a/src/legacy/core_plugins/timelion/public/index.scss b/src/legacy/core_plugins/timelion/public/index.scss index ebf000d160b54..cf2a7859a505d 100644 --- a/src/legacy/core_plugins/timelion/public/index.scss +++ b/src/legacy/core_plugins/timelion/public/index.scss @@ -1,6 +1,3 @@ -// Should import both the EUI constants and any Kibana ones that are considered global -@import 'src/legacy/ui/public/styles/styling_constants'; - /* Timelion plugin styles */ // Prefix all styles with "tim" to avoid conflicts. diff --git a/src/legacy/server/sass/__fixtures__/index.scss b/src/legacy/server/sass/__fixtures__/index.scss index 019941534cadd..ed2657ed3f6ee 100644 --- a/src/legacy/server/sass/__fixtures__/index.scss +++ b/src/legacy/server/sass/__fixtures__/index.scss @@ -1,5 +1,3 @@ -@import 'src/legacy/ui/public/styles/styling_constants'; - foo { bar { display: flex; diff --git a/src/legacy/server/sass/build.js b/src/legacy/server/sass/build.js index 2c0a2d84be2c0..536a6dc581db6 100644 --- a/src/legacy/server/sass/build.js +++ b/src/legacy/server/sass/build.js @@ -29,19 +29,15 @@ import isPathInside from 'is-path-inside'; import { PUBLIC_PATH_PLACEHOLDER } from '../../../optimize/public_path_placeholder'; const renderSass = promisify(sass.render); +const readFile = promisify(fs.readFile); const writeFile = promisify(fs.writeFile); const access = promisify(fs.access); const copyFile = promisify(fs.copyFile); const mkdirAsync = promisify(fs.mkdir); const UI_ASSETS_DIR = resolve(__dirname, '../../../core/server/core_app/assets'); -const DARK_THEME_IMPORTER = (url) => { - if (url.includes('eui_colors_light')) { - return { file: url.replace('eui_colors_light', 'eui_colors_dark') }; - } - - return { file: url }; -}; +const LIGHT_GLOBALS_PATH = resolve(__dirname, '../../../legacy/ui/public/styles/_globals_v7light'); +const DARK_GLOBALS_PATH = resolve(__dirname, '../../../legacy/ui/public/styles/_globals_v7dark'); const makeAsset = (request, { path, root, boundry, copyRoot, urlRoot }) => { const relativePath = relative(root, path); @@ -84,10 +80,16 @@ export class Build { */ async build() { + const scss = await readFile(this.sourcePath); + const relativeGlobalsPath = + this.theme === 'dark' + ? relative(this.sourceDir, DARK_GLOBALS_PATH) + : relative(this.sourceDir, LIGHT_GLOBALS_PATH); + const rendered = await renderSass({ file: this.sourcePath, + data: `@import '${relativeGlobalsPath}';\n${scss}`, outFile: this.targetPath, - importer: this.theme === 'dark' ? DARK_THEME_IMPORTER : undefined, sourceMap: true, outputStyle: 'nested', sourceMapEmbed: true, diff --git a/src/legacy/ui/public/styles/_globals_v7dark.scss b/src/legacy/ui/public/styles/_globals_v7dark.scss new file mode 100644 index 0000000000000..d5a8535f32718 --- /dev/null +++ b/src/legacy/ui/public/styles/_globals_v7dark.scss @@ -0,0 +1,12 @@ +// v7dark global scope +// +// prepended to all .scss imports (from JS, when v7dark theme selected) and +// legacy uiExports.styleSheetPaths when any dark theme is selected + +@import '@elastic/eui/src/themes/eui/eui_colors_dark'; + +@import '@elastic/eui/src/global_styling/functions/index'; +@import '@elastic/eui/src/global_styling/variables/index'; +@import '@elastic/eui/src/global_styling/mixins/index'; + +@import './mixins'; diff --git a/src/legacy/ui/public/styles/_styling_constants.scss b/src/legacy/ui/public/styles/_globals_v7light.scss similarity index 59% rename from src/legacy/ui/public/styles/_styling_constants.scss rename to src/legacy/ui/public/styles/_globals_v7light.scss index 74fc54b410285..522b346b64900 100644 --- a/src/legacy/ui/public/styles/_styling_constants.scss +++ b/src/legacy/ui/public/styles/_globals_v7light.scss @@ -1,9 +1,10 @@ -// EUI global scope +// v7light global scope +// +// prepended to all .scss imports (from JS, when v7light theme selected) and +// legacy uiExports.styleSheetPaths when any dark theme is selected @import '@elastic/eui/src/themes/eui/eui_colors_light'; -// Note that fonts are loaded directly by src/legacy/ui/ui_render/views/chrome.pug - @import '@elastic/eui/src/global_styling/functions/index'; @import '@elastic/eui/src/global_styling/variables/index'; @import '@elastic/eui/src/global_styling/mixins/index'; diff --git a/src/legacy/ui/public/styles/_globals_v8dark.scss b/src/legacy/ui/public/styles/_globals_v8dark.scss new file mode 100644 index 0000000000000..972365e9e9d0e --- /dev/null +++ b/src/legacy/ui/public/styles/_globals_v8dark.scss @@ -0,0 +1,16 @@ +// v8dark global scope +// +// prepended to all .scss imports (from JS, when v8dark theme selected) + +@import '@elastic/eui/src/themes/eui-amsterdam/eui_amsterdam_colors_dark'; + +@import '@elastic/eui/src/global_styling/functions/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/functions/index'; + +@import '@elastic/eui/src/global_styling/variables/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/variables/index'; + +@import '@elastic/eui/src/global_styling/mixins/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/mixins/index'; + +@import './mixins'; diff --git a/src/legacy/ui/public/styles/_globals_v8light.scss b/src/legacy/ui/public/styles/_globals_v8light.scss new file mode 100644 index 0000000000000..dc99f4d45082e --- /dev/null +++ b/src/legacy/ui/public/styles/_globals_v8light.scss @@ -0,0 +1,16 @@ +// v8light global scope +// +// prepended to all .scss imports (from JS, when v8light theme selected) + +@import '@elastic/eui/src/themes/eui-amsterdam/eui_amsterdam_colors_light'; + +@import '@elastic/eui/src/global_styling/functions/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/functions/index'; + +@import '@elastic/eui/src/global_styling/variables/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/variables/index'; + +@import '@elastic/eui/src/global_styling/mixins/index'; +@import '@elastic/eui/src/themes/eui-amsterdam/global_styling/mixins/index'; + +@import './mixins'; diff --git a/src/legacy/ui/ui_render/bootstrap/template.js.hbs b/src/legacy/ui/ui_render/bootstrap/template.js.hbs index ca2e944489a73..bbca051ce31a1 100644 --- a/src/legacy/ui/ui_render/bootstrap/template.js.hbs +++ b/src/legacy/ui/ui_render/bootstrap/template.js.hbs @@ -1,7 +1,6 @@ var kbnCsp = JSON.parse(document.querySelector('kbn-csp').getAttribute('data')); window.__kbnStrictCsp__ = kbnCsp.strictCsp; -window.__kbnDarkMode__ = {{darkMode}}; -window.__kbnThemeVersion__ = "{{themeVersion}}"; +window.__kbnThemeTag__ = "{{themeTag}}"; window.__kbnPublicPath__ = {{publicPathMap}}; window.__kbnBundles__ = {{kbnBundlesLoaderSource}} diff --git a/src/legacy/ui/ui_render/ui_render_mixin.js b/src/legacy/ui/ui_render/ui_render_mixin.js index 0cfcb91aa94ef..b4b18e086e809 100644 --- a/src/legacy/ui/ui_render/ui_render_mixin.js +++ b/src/legacy/ui/ui_render/ui_render_mixin.js @@ -89,6 +89,7 @@ export function uiRenderMixin(kbnServer, server, config) { const isCore = !app; const uiSettings = request.getUiSettingsService(); + const darkMode = !authEnabled || request.auth.isAuthenticated ? await uiSettings.get('theme:darkMode') @@ -99,6 +100,8 @@ export function uiRenderMixin(kbnServer, server, config) { ? await uiSettings.get('theme:version') : 'v7'; + const themeTag = `${themeVersion === 'v7' ? 'v7' : 'v8'}${darkMode ? 'dark' : 'light'}`; + const buildHash = server.newPlatform.env.packageInfo.buildNum; const basePath = config.get('server.basePath'); @@ -178,8 +181,7 @@ export function uiRenderMixin(kbnServer, server, config) { const bootstrap = new AppBootstrap({ templateData: { - darkMode, - themeVersion, + themeTag, jsDependencyPaths, styleSheetPaths, publicPathMap, diff --git a/src/plugins/tile_map/public/index.scss b/src/plugins/tile_map/public/index.scss index 4ce500b2da4d2..f4b86b0c31190 100644 --- a/src/plugins/tile_map/public/index.scss +++ b/src/plugins/tile_map/public/index.scss @@ -1,5 +1,3 @@ -@import 'src/legacy/ui/public/styles/styling_constants'; - // Prefix all styles with "tlm" to avoid conflicts. // Examples // tlmChart diff --git a/x-pack/plugins/canvas/.storybook/webpack.config.js b/x-pack/plugins/canvas/.storybook/webpack.config.js index 45a5303d8b0db..3148a6742f76a 100644 --- a/x-pack/plugins/canvas/.storybook/webpack.config.js +++ b/x-pack/plugins/canvas/.storybook/webpack.config.js @@ -80,7 +80,7 @@ module.exports = async ({ config }) => { prependData(loaderContext) { return `@import ${stringifyRequest( loaderContext, - path.resolve(KIBANA_ROOT, 'src/legacy/ui/public/styles/_styling_constants.scss') + path.resolve(KIBANA_ROOT, 'src/legacy/ui/public/styles/_globals_v7light.scss') )};\n`; }, sassOptions: { @@ -199,7 +199,6 @@ module.exports = async ({ config }) => { config.resolve.alias['ui/url/absolute_to_parsed_url'] = path.resolve(__dirname, '../tasks/mocks/uiAbsoluteToParsedUrl'); config.resolve.alias['ui/chrome'] = path.resolve(__dirname, '../tasks/mocks/uiChrome'); config.resolve.alias.ui = path.resolve(KIBANA_ROOT, 'src/legacy/ui/public'); - config.resolve.alias['src/legacy/ui/public/styles/styling_constants'] = path.resolve(KIBANA_ROOT, 'src/legacy/ui/public/styles/_styling_constants.scss'); config.resolve.alias.ng_mock$ = path.resolve(KIBANA_ROOT, 'src/test_utils/public/ng_mock'); return config; diff --git a/x-pack/plugins/canvas/public/style/index.scss b/x-pack/plugins/canvas/public/style/index.scss index 78a34a58f5f78..9cd2bdabd3f45 100644 --- a/x-pack/plugins/canvas/public/style/index.scss +++ b/x-pack/plugins/canvas/public/style/index.scss @@ -1,5 +1,3 @@ -@import 'src/legacy/ui/public/styles/styling_constants'; - // Canvas core @import 'hackery'; @import 'main'; diff --git a/x-pack/plugins/canvas/shareable_runtime/webpack.config.js b/x-pack/plugins/canvas/shareable_runtime/webpack.config.js index 66b0a7bc558cb..1a5a21985ba72 100644 --- a/x-pack/plugins/canvas/shareable_runtime/webpack.config.js +++ b/x-pack/plugins/canvas/shareable_runtime/webpack.config.js @@ -188,7 +188,7 @@ module.exports = { prependData(loaderContext) { return `@import ${stringifyRequest( loaderContext, - path.resolve(KIBANA_ROOT, 'src/legacy/ui/public/styles/_styling_constants.scss') + path.resolve(KIBANA_ROOT, 'src/legacy/ui/public/styles/_globals_v7light.scss') )};\n`; }, webpackImporter: false, diff --git a/x-pack/plugins/index_management/public/index.scss b/x-pack/plugins/index_management/public/index.scss index 0fbf8ea5036c5..02686c4f7d6f3 100644 --- a/x-pack/plugins/index_management/public/index.scss +++ b/x-pack/plugins/index_management/public/index.scss @@ -1,6 +1,3 @@ -// Import the EUI global scope so we can use EUI constants -@import 'src/legacy/ui/public/styles/_styling_constants'; - // Index management plugin styles // Prefix all styles with "ind" to avoid conflicts. diff --git a/x-pack/plugins/infra/public/index.scss b/x-pack/plugins/infra/public/index.scss index 05e045c1bd53b..a3d74e3afebe3 100644 --- a/x-pack/plugins/infra/public/index.scss +++ b/x-pack/plugins/infra/public/index.scss @@ -1,6 +1,3 @@ -// Import the EUI global scope so we can use EUI constants -@import 'src/legacy/ui/public/styles/_styling_constants'; - /* Infra plugin styles */ .infra-container-element { diff --git a/x-pack/plugins/maps/public/index.scss b/x-pack/plugins/maps/public/index.scss index fe974fa610c03..d2dd07b0f81f9 100644 --- a/x-pack/plugins/maps/public/index.scss +++ b/x-pack/plugins/maps/public/index.scss @@ -1,8 +1,5 @@ /* GIS plugin styles */ -// Import the EUI global scope so we can use EUI constants -@import 'src/legacy/ui/public/styles/_styling_constants'; - // Prefix all styles with "map" to avoid conflicts. // Examples // mapChart diff --git a/x-pack/plugins/ml/public/application/_index.scss b/x-pack/plugins/ml/public/application/_index.scss index 11dc593a235a1..65e914a1ac923 100644 --- a/x-pack/plugins/ml/public/application/_index.scss +++ b/x-pack/plugins/ml/public/application/_index.scss @@ -1,6 +1,3 @@ -// Should import both the EUI constants and any Kibana ones that are considered global -@import 'src/legacy/ui/public/styles/styling_constants'; - // ML has it's own variables for coloring @import 'variables'; diff --git a/x-pack/plugins/snapshot_restore/public/application/index.scss b/x-pack/plugins/snapshot_restore/public/application/index.scss index b680f4d3ebf90..3e16e3b5301e7 100644 --- a/x-pack/plugins/snapshot_restore/public/application/index.scss +++ b/x-pack/plugins/snapshot_restore/public/application/index.scss @@ -1,6 +1,3 @@ -// Import the EUI global scope so we can use EUI constants -@import 'src/legacy/ui/public/styles/_styling_constants'; - // Snapshot and Restore plugin styles // Prefix all styles with "snapshotRestore" to avoid conflicts. diff --git a/x-pack/plugins/transform/public/app/index.scss b/x-pack/plugins/transform/public/app/index.scss index beb5ee6be67e6..cc5cc87c754c9 100644 --- a/x-pack/plugins/transform/public/app/index.scss +++ b/x-pack/plugins/transform/public/app/index.scss @@ -1,6 +1,3 @@ -// Import the EUI global scope so we can use EUI constants -@import 'src/legacy/ui/public/styles/_styling_constants'; - // Transform plugin styles // Prefix all styles with "transform" to avoid conflicts. diff --git a/x-pack/plugins/upgrade_assistant/public/application/_index.scss b/x-pack/plugins/upgrade_assistant/public/application/_index.scss index 6000af5498cd6..841415620d691 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/_index.scss +++ b/x-pack/plugins/upgrade_assistant/public/application/_index.scss @@ -1,3 +1 @@ -@import 'src/legacy/ui/public/styles/_styling_constants'; - @import 'components/index'; From 23ea7acb152d238d07e7e0db2c4b7a78b0838dc0 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 2 Jul 2020 16:35:16 -0600 Subject: [PATCH 13/59] [Maps] Fix cannot select Solid fill-color when removing fields (#70621) Co-authored-by: Elastic Machine --- .../maps/public/actions/layer_actions.ts | 4 +- .../maps/public/classes/styles/style.ts | 6 +- .../classes/styles/vector/vector_style.js | 16 ++- .../styles/vector/vector_style.test.js | 114 +++++++----------- 4 files changed, 66 insertions(+), 74 deletions(-) diff --git a/x-pack/plugins/maps/public/actions/layer_actions.ts b/x-pack/plugins/maps/public/actions/layer_actions.ts index 51e251a5d8e20..a2711fbd124fb 100644 --- a/x-pack/plugins/maps/public/actions/layer_actions.ts +++ b/x-pack/plugins/maps/public/actions/layer_actions.ts @@ -13,6 +13,7 @@ import { getLayerListRaw, getSelectedLayerId, getMapReady, + getMapColors, } from '../selectors/map_selectors'; import { FLYOUT_STATE } from '../reducers/ui'; import { cancelRequest } from '../reducers/non_serializable_instances'; @@ -384,7 +385,8 @@ export function clearMissingStyleProperties(layerId: string) { const nextFields = await (targetLayer as IVectorLayer).getFields(); // take into account all fields, since labels can be driven by any field (source or join) const { hasChanges, nextStyleDescriptor } = style.getDescriptorWithMissingStylePropsRemoved( - nextFields + nextFields, + getMapColors(getState()) ); if (hasChanges && nextStyleDescriptor) { dispatch(updateLayerStyle(layerId, nextStyleDescriptor)); diff --git a/x-pack/plugins/maps/public/classes/styles/style.ts b/x-pack/plugins/maps/public/classes/styles/style.ts index 7d39acd504c42..1859c7875ad11 100644 --- a/x-pack/plugins/maps/public/classes/styles/style.ts +++ b/x-pack/plugins/maps/public/classes/styles/style.ts @@ -13,7 +13,8 @@ import { DataRequest } from '../util/data_request'; export interface IStyle { getDescriptor(): StyleDescriptor | null; getDescriptorWithMissingStylePropsRemoved( - nextFields: IField[] + nextFields: IField[], + mapColors: string[] ): { hasChanges: boolean; nextStyleDescriptor?: StyleDescriptor }; pluckStyleMetaFromSourceDataRequest(sourceDataRequest: DataRequest): StyleMetaDescriptor; renderEditor({ @@ -34,7 +35,8 @@ export class AbstractStyle implements IStyle { } getDescriptorWithMissingStylePropsRemoved( - nextFields: IField[] + nextFields: IField[], + mapColors: string[] ): { hasChanges: boolean; nextStyleDescriptor?: StyleDescriptor } { return { hasChanges: false, diff --git a/x-pack/plugins/maps/public/classes/styles/vector/vector_style.js b/x-pack/plugins/maps/public/classes/styles/vector/vector_style.js index 04a5381fa2592..3cff48e4d682e 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/vector_style.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/vector_style.js @@ -7,7 +7,12 @@ import _ from 'lodash'; import React from 'react'; import { VectorStyleEditor } from './components/vector_style_editor'; -import { getDefaultProperties, LINE_STYLES, POLYGON_STYLES } from './vector_style_defaults'; +import { + getDefaultProperties, + getDefaultStaticProperties, + LINE_STYLES, + POLYGON_STYLES, +} from './vector_style_defaults'; import { AbstractStyle } from '../style'; import { GEO_JSON_TYPE, @@ -191,7 +196,7 @@ export class VectorStyle extends AbstractStyle { * This method does not update its descriptor. It just returns a new descriptor that the caller * can then use to update store state via dispatch. */ - getDescriptorWithMissingStylePropsRemoved(nextFields) { + getDescriptorWithMissingStylePropsRemoved(nextFields, mapColors) { const originalProperties = this.getRawProperties(); const updatedProperties = {}; @@ -201,6 +206,13 @@ export class VectorStyle extends AbstractStyle { }); dynamicProperties.forEach((key) => { + // Convert dynamic styling to static stying when there are no nextFields + if (nextFields.length === 0) { + const staticProperties = getDefaultStaticProperties(mapColors); + updatedProperties[key] = staticProperties[key]; + return; + } + const dynamicProperty = originalProperties[key]; const fieldName = dynamicProperty && dynamicProperty.options.field && dynamicProperty.options.field.name; diff --git a/x-pack/plugins/maps/public/classes/styles/vector/vector_style.test.js b/x-pack/plugins/maps/public/classes/styles/vector/vector_style.test.js index a0dc07b8e545b..a85cd0cc86407 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/vector_style.test.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/vector_style.test.js @@ -6,7 +6,12 @@ import { VectorStyle } from './vector_style'; import { DataRequest } from '../../util/data_request'; -import { FIELD_ORIGIN, STYLE_TYPE, VECTOR_SHAPE_TYPE } from '../../../../common/constants'; +import { + FIELD_ORIGIN, + STYLE_TYPE, + VECTOR_SHAPE_TYPE, + VECTOR_STYLES, +} from '../../../../common/constants'; jest.mock('../../../kibana_services'); jest.mock('ui/new_platform'); @@ -42,6 +47,7 @@ class MockSource { describe('getDescriptorWithMissingStylePropsRemoved', () => { const fieldName = 'doIStillExist'; + const mapColors = []; const properties = { fillColor: { type: STYLE_TYPE.STATIC, @@ -59,7 +65,8 @@ describe('getDescriptorWithMissingStylePropsRemoved', () => { iconSize: { type: STYLE_TYPE.DYNAMIC, options: { - color: 'a color', + minSize: 1, + maxSize: 10, field: { name: fieldName, origin: FIELD_ORIGIN.SOURCE }, }, }, @@ -75,86 +82,55 @@ describe('getDescriptorWithMissingStylePropsRemoved', () => { const vectorStyle = new VectorStyle({ properties }, new MockSource()); const nextFields = [new MockField({ fieldName })]; - const { hasChanges } = vectorStyle.getDescriptorWithMissingStylePropsRemoved(nextFields); + const { hasChanges } = vectorStyle.getDescriptorWithMissingStylePropsRemoved( + nextFields, + mapColors + ); expect(hasChanges).toBe(false); }); it('Should clear missing fields when next ordinal fields do not contain existing style property fields', () => { const vectorStyle = new VectorStyle({ properties }, new MockSource()); - const nextFields = []; + const nextFields = [new MockField({ fieldName: 'someOtherField' })]; const { hasChanges, nextStyleDescriptor, - } = vectorStyle.getDescriptorWithMissingStylePropsRemoved(nextFields); + } = vectorStyle.getDescriptorWithMissingStylePropsRemoved(nextFields, mapColors); expect(hasChanges).toBe(true); - expect(nextStyleDescriptor.properties).toEqual({ - fillColor: { - options: {}, - type: 'STATIC', - }, - icon: { - options: { - value: 'marker', - }, - type: 'STATIC', - }, - iconOrientation: { - options: { - orientation: 0, - }, - type: 'STATIC', - }, - iconSize: { - options: { - color: 'a color', - }, - type: 'DYNAMIC', - }, - labelText: { - options: { - value: '', - }, - type: 'STATIC', - }, - labelBorderColor: { - options: { - color: '#FFFFFF', - }, - type: 'STATIC', - }, - labelBorderSize: { - options: { - size: 'SMALL', - }, - }, - labelColor: { - options: { - color: '#000000', - }, - type: 'STATIC', - }, - labelSize: { - options: { - size: 14, - }, - type: 'STATIC', - }, - lineColor: { - options: {}, - type: 'DYNAMIC', + expect(nextStyleDescriptor.properties[VECTOR_STYLES.LINE_COLOR]).toEqual({ + options: {}, + type: 'DYNAMIC', + }); + expect(nextStyleDescriptor.properties[VECTOR_STYLES.ICON_SIZE]).toEqual({ + options: { + minSize: 1, + maxSize: 10, }, - lineWidth: { - options: { - size: 1, - }, - type: 'STATIC', + type: 'DYNAMIC', + }); + }); + + it('Should convert dynamic styles to static styles when there are no next fields', () => { + const vectorStyle = new VectorStyle({ properties }, new MockSource()); + + const nextFields = []; + const { + hasChanges, + nextStyleDescriptor, + } = vectorStyle.getDescriptorWithMissingStylePropsRemoved(nextFields, mapColors); + expect(hasChanges).toBe(true); + expect(nextStyleDescriptor.properties[VECTOR_STYLES.LINE_COLOR]).toEqual({ + options: { + color: '#41937c', }, - symbolizeAs: { - options: { - value: 'circle', - }, + type: 'STATIC', + }); + expect(nextStyleDescriptor.properties[VECTOR_STYLES.ICON_SIZE]).toEqual({ + options: { + size: 6, }, + type: 'STATIC', }); }); }); From 20237b8d5b3a0b9bfdbd955537e1f12199318a28 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Thu, 2 Jul 2020 18:40:39 -0400 Subject: [PATCH 14/59] [EPM] Use higher priority than default templates (#70640) * Use higher priority than default templates * Fixing the jest tests --- .../template/__snapshots__/template.test.ts.snap | 6 +++--- .../server/services/epm/elasticsearch/template/template.ts | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/__snapshots__/template.test.ts.snap b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/__snapshots__/template.test.ts.snap index 635742c82f9a4..f5fec020bf5b4 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/__snapshots__/template.test.ts.snap +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/__snapshots__/template.test.ts.snap @@ -2,7 +2,7 @@ exports[`tests loading base.yml: base.yml 1`] = ` { - "priority": 1, + "priority": 200, "index_patterns": [ "foo-*" ], @@ -105,7 +105,7 @@ exports[`tests loading base.yml: base.yml 1`] = ` exports[`tests loading coredns.logs.yml: coredns.logs.yml 1`] = ` { - "priority": 1, + "priority": 200, "index_patterns": [ "foo-*" ], @@ -208,7 +208,7 @@ exports[`tests loading coredns.logs.yml: coredns.logs.yml 1`] = ` exports[`tests loading system.yml: system.yml 1`] = ` { - "priority": 1, + "priority": 200, "index_patterns": [ "whatsthis-*" ], diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/template.ts b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/template.ts index 06c07da6cd77a..2de378f717534 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/template.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/template/template.ts @@ -247,8 +247,11 @@ function getBaseTemplate( packageName: string ): IndexTemplate { return { - // This takes precedence over all index templates installed with the 'base' package - priority: 1, + // This takes precedence over all index templates installed by ES by default (logs-*-* and metrics-*-*) + // if this number is lower than the ES value (which is 100) this template will never be applied when a data stream + // is created. I'm using 200 here to give some room for users to create their own template and fit it between the + // default and the one the ingest manager uses. + priority: 200, // To be completed with the correct index patterns index_patterns: [`${templateName}-*`], template: { From 67c70e762cf4a37705e3e9ecd91f61fc57a36594 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Thu, 2 Jul 2020 16:00:05 -0700 Subject: [PATCH 15/59] Add Snapshot Restore README with quick-testing steps. (#70494) --- x-pack/plugins/snapshot_restore/README.md | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 x-pack/plugins/snapshot_restore/README.md diff --git a/x-pack/plugins/snapshot_restore/README.md b/x-pack/plugins/snapshot_restore/README.md new file mode 100644 index 0000000000000..e11483785e958 --- /dev/null +++ b/x-pack/plugins/snapshot_restore/README.md @@ -0,0 +1,78 @@ +# Snapshot Restore + +## Quick steps for testing + +### File system + +1. Add the file system path you want to use to elasticsearch.yml or as part of starting up ES. Note that this path should point to a directory that exists. + +``` +path: + repo: /tmp/es-backups +``` + +or + +``` +yarn es snapshot --license=trial -E path.repo=/tmp/es-backups +``` + +2. Use Console or UI to add a repository. Use the file system path above as the `location` setting: + +``` +PUT /_snapshot/my_backup +{ + "type": "fs", + "settings": { + "location": "/tmp/es-backups", + "chunk_size": "10mb" + } +} +``` + +3. Adjust `settings` as necessary, all available settings can be found in docs: +https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html#_shared_file_system_repository + +### Readonly + +Readonly repositories only take `url` setting. Documentation: https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html#_read_only_url_repository + +It's easy to set up a `file:` url: +``` +PUT _snapshot/my_readonly_repository +{ + "type": "url", + "settings": { + "url": "file:///tmp/es-backups" + } +} +``` + +### Source only + +Source only repositories are special in that they are basically a wrapper around another repository type. Documentation: https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html#_source_only_repository + +This means that the settings that are available depends on the `delegate_type` parameter. For example, this source only repository delegates to `fs` (file system) type, so all file system rules and available settings apply: + +``` +PUT _snapshot/my_src_only_repository +{ + "type" : "source", + "settings" : { + "delegate_type" : "fs", + "location" : "/tmp/es-backups" + } +} +``` + +### Plugin-based repositories: + +There are four official repository plugins available: S3, GCS, HDFS, Azure. Available plugin repository settings can be found in the docs: https://www.elastic.co/guide/en/elasticsearch/plugins/master/repository.html. + +To run ES with plugins: + +1. Run `yarn es snapshot` from the Kibana directory like normal, then exit out of process. +2. `cd .es/8.0.0` +3. `bin/elasticsearch-plugin install https://snapshots.elastic.co/downloads/elasticsearch-plugins/repository-s3/repository-s3-8.0.0-SNAPSHOT.zip` +4. Repeat step 3 for additional plugins, replacing occurrences of `repository-s3` with the plugin you want to install. +5. Run `bin/elasticsearch` from the `.es/8.0.0` directory. Otherwise, starting ES with `yarn es snapshot` would overwrite the plugins you just installed. \ No newline at end of file From 6c62c686cf28f76dba2248be7382c1ad9a342162 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 3 Jul 2020 01:30:13 +0100 Subject: [PATCH 16/59] chore(NA): upgrade to lodash@4 (#69868) * chore(NA): upgrade oss to lodash4 chore(NA): migrate cli, cli_plugin, cli_keystore, dev, test_utils and apm src script to lodash4 chore(NA): missing file for cli plugin chore(NA): add src core chore(NA): es archiver and fixtures chore(NA): try to fix functional test failure chore(NA): migrate src/legacy entirely to lodash4 except src/legacy/core_plugins chore(NA): move legacy core plugins to lodash4 chore(NA): upgrade optimize to lodash4 chore(NA): upgrade to lodash4 on advanced_settings, charts, console and dashboard chore(NA): migrate to lodash4 on dev_tools, discover, embeddable, es_ui)shared, expressions, home plugins chore(NA): upgrade data plugin to lodash4 chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4 chore(NA): missing data upgrades to lodash4 Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4" This reverts commit 137055c5fed2fc52bb26547e0bc1ad2e3d4fe309. Revert "Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4"" This reverts commit f7e73688782998513d9fb6d7e8f0765e9beb28d1. Revert "chore(NA): missing data upgrades to lodash4" This reverts commit 92b85bf947a89bfc70cc4052738a6b2128ffb076. Revert "chore(NA): upgrade data plugin to lodash4" This reverts commit 88fdb075ee1e26c4ac979b6681d8a2b002df74c6. chore(NA): upgrade idx_pattern_mgt, input_control_vis, inspector, kbn_legacy, kbn_react, kbn_usage_collections, kbn_utils, management and maps_legacy to lodash4 chore(NA): map src plugin data to lodash3 chore(NA): missing lodash.clonedeep dep chore(NA): change packages kbn-config-schema deps chore(NA): update renovate config chore(NA): upgrade vis_type plugins to lodash4 chore(NA): move vis_type_vislib to lodash3 chore(NA): update visualizations and visualize to lodash4 chore(NA): remove lodash 3 types from src and move test to lodash4 chore(NA): move home, usage_collection and management to lodash 3 Revert "chore(NA): move home, usage_collection and management to lodash 3" This reverts commit f86e8585f02d21550746569af54215b076a79a3d. chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3 chore(NA): update x-pack test to mock lodash4 Revert "chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3" This reverts commit 2d10fe450533e1b36db21d99cfae3ce996a244e0. * chore(NA): move x-pack and packages to lodash 4 * chore(NA): remove mention to lodash from main package.json * chore(NA): remove helper alias for lodash4 and make it the default lodash * chore(NA): fix last failing types in the repo * chore(NA): fix public api * chore(NA): fix types for agg_row.tsx * chore(NA): fix increment of optimizer modules in the rollup plugin * chore(NA): migrate `src/core/public/http/fetch.ts` (#5) * omit undefined query props * just remove merge usage * fix types * chore(NA): fixes for feedback from apm team * chore(NA): recover old behaviour on apm LoadingIndeicatorContext.tsx * chore(NA): fixes for feedback from watson * Platform lodash4 tweaks (#6) * chore(NA): fix types and behaviour on src/core/server/elasticsearch/errors.ts * Canvas fixes for lodash upgrade * [APM] Adds unit test for APM service maps transform (#7) * Adds a snapshot unit test for getConnections and rearranges some code to make testing easier * reverts `ArrayList` back to `String[]` in the painless script within `fetch_service_paths_from_trace_ids.ts` * chore(NA): update yarn.lock * chore(NA): remove any and use a real type for alerts task runner Co-authored-by: Gidi Meir Morris * chore(NA): used named import for triggers_actions_ui file * chore(NA): fix eslint * chore(NA): fix types * Delete most uptime lodash references. * Simplify. Clean up types. * [Uptime] Delete most uptime lodash references (#8) * Delete most uptime lodash references. * Simplify. Clean up types. * chore(NA): add eslint rule to avoid using lodash3 * chore(NA): apply changes on feedback from es-ui team * fix some types (#9) * Clean up some expressions types. * chore(NA): missing ts-expect-error statements * Upgrade lodash 4 vislib (#11) * replace lodash 3 with lodash 4 on vislib plugin * Further changes * further replacement of lodash3 to 4 * further work on upgrading to lodash 4 * final changes to update lodash * chore(NA): upgrade data plugin to lodash4 chore(NA): upgrade data plugin public to lodash4 chore(NA): fix typecheck task chore(NA): fix agg_config with hasIn chore(NA): assign to assignIn and has to hasIn chore(NA): upgrade data plugin server to lodash4 chore(NA): new signature for core api fix(NA): match behaviour between lodash3 and lodash4 for set in search_source * chore(NA): remove lodash3 completely from the repo * chore(NA): fix x-pack/test/api_integration/apis/metrics_ui/snapshot.ts missing content * chore(NA): fix lodash usage on apm * chore(NA): fix typecheck for maps * Patch lodash template (#12) * Applying changes from https://github.com/elastic/kibana/pull/64985 * Using isIterateeCall, because it seems less brittle * Also patching `lodash/template` and `lodash/fp/template` * Reorganizing some files... * Revising comment * Ends up `_` is a function also... I hate JavaScript Co-authored-by: Pierre Gayvallet Co-authored-by: Josh Dover Co-authored-by: Clint Andrew Hall Co-authored-by: Oliver Gupte Co-authored-by: Elastic Machine Co-authored-by: Gidi Meir Morris Co-authored-by: Justin Kambic Co-authored-by: Stratoula Kalafateli Co-authored-by: Luke Elmers Co-authored-by: Brandon Kobel Co-authored-by: kobelb --- ...-plugins-data-public.fieldformat.tojson.md | 8 +- package.json | 9 +- packages/kbn-config-schema/package.json | 1 + packages/kbn-interpreter/package.json | 3 +- .../src/common/lib/registry.js | 2 +- packages/kbn-plugin-generator/index.js | 4 +- packages/kbn-plugin-generator/package.json | 5 +- .../kbn-plugin-generator/sao_template/sao.js | 4 +- packages/kbn-pm/package.json | 4 +- .../absolute_path_snapshot_serializer.ts | 2 +- .../kbn-storybook/lib/webpack.dll.config.js | 1 - packages/kbn-test/package.json | 2 + .../lib/config/config.ts | 9 +- .../src/legacy_es/legacy_es_test_cluster.js | 3 +- .../src/page_load_metrics/navigation.ts | 1 - packages/kbn-ui-framework/Gruntfile.js | 2 +- packages/kbn-ui-framework/package.json | 2 +- renovate.json5 | 16 - src/apm.js | 2 +- src/cli/cluster/cluster_manager.test.ts | 2 +- src/cli/cluster/worker.ts | 2 +- src/cli/help.js | 2 +- src/core/public/http/fetch.ts | 39 +- .../public/plugins/plugins_service.test.ts | 6 +- .../saved_objects/saved_objects_client.ts | 4 +- .../saved_objects/simple_saved_object.ts | 2 +- .../server/capabilities/merge_capabilities.ts | 4 +- .../config/deprecation/core_deprecations.ts | 5 +- .../server/elasticsearch/legacy/errors.ts | 2 +- .../server/http/base_path_proxy_server.ts | 4 +- ...gacy_object_to_config_adapter.test.ts.snap | 5 +- .../mappings/lib/get_property.ts | 2 +- .../migrations/core/document_migrator.ts | 5 +- .../core/migration_coordinator.test.ts | 1 - .../saved_objects/service/lib/repository.ts | 2 +- src/core/utils/deep_freeze.test.ts | 15 +- src/dev/precommit_hook/casing_check_config.js | 1 - src/dev/sass/build_sass.js | 2 +- src/fixtures/agg_resp/geohash_grid.js | 2 +- .../core_plugins/console_legacy/index.ts | 2 +- .../server/lib/handle_es_error.js | 2 +- .../__tests__/vis_type_vislib/lib/dispatch.js | 2 +- .../visualizations/column_chart.js | 4 +- .../core_plugins/timelion/public/app.js | 2 +- .../public/directives/saved_object_finder.js | 2 +- .../directives/timelion_expression_input.js | 2 +- .../timelion_interval/timelion_interval.js | 2 +- .../public/panels/timechart/schema.ts | 2 +- .../plugin_spec/plugin_spec.js | 3 +- .../i18n/localization/file_integrity.ts | 2 +- src/legacy/server/logging/log_format.js | 2 +- src/legacy/server/status/server_status.js | 2 +- src/legacy/server/status/states.js | 2 +- src/legacy/ui/public/events.js | 4 +- .../indexed_array/__tests__/indexed_array.js | 8 +- .../ui/public/indexed_array/indexed_array.js | 2 +- .../public/routes/__tests__/_route_manager.js | 2 +- .../ui/public/state_management/state.js | 2 +- src/legacy/ui/public/utils/collection.ts | 2 +- src/legacy/utils/deep_clone_with_buffers.ts | 4 +- src/legacy/utils/unset.js | 3 +- .../services/colors/mapped_colors.test.ts | 2 +- .../public/services/colors/mapped_colors.ts | 8 +- .../application/components/settings_modal.tsx | 1 + .../__tests__/integration.test.js | 2 +- .../public/lib/autocomplete/body_completer.js | 2 +- .../autocomplete/components/list_component.js | 2 +- .../components/url_pattern_matcher.js | 109 +- .../console/public/lib/autocomplete/engine.js | 18 +- .../public/lib/autocomplete/url_params.js | 20 +- src/plugins/console/public/lib/kb/api.js | 12 +- .../console/public/lib/mappings/mappings.js | 4 +- .../server/lib/elasticsearch_proxy_config.ts | 2 +- .../api/console/proxy/create_handler.ts | 4 +- .../services/spec_definitions_service.ts | 4 +- .../actions/clone_panel_action.tsx | 1 + .../actions/replace_panel_flyout.tsx | 1 + .../application/dashboard_app_controller.tsx | 6 +- .../embeddable/panel/create_panel_state.ts | 1 - .../panel/dashboard_panel_placement.ts | 1 + .../application/lib/update_saved_dashboard.ts | 2 +- .../saved_objects/dashboard_migrations.ts | 6 +- .../saved_objects/migrate_match_all_query.ts | 2 +- .../es_query/es_query/migrate_filter.test.ts | 4 +- .../data/common/es_query/filters/index.ts | 2 +- .../common/es_query/filters/range_filter.ts | 6 +- .../common/es_query/kuery/functions/is.ts | 4 +- .../field_formats/converters/truncate.ts | 4 +- .../common/field_formats/field_format.test.ts | 6 +- .../data/common/field_formats/field_format.ts | 2 +- .../field_formats/field_formats_registry.ts | 2 +- .../common/field_mapping/mapping_setup.ts | 2 +- .../ensure_default_index_pattern.ts | 4 +- .../index_patterns/flatten_hit.ts | 2 +- .../index_patterns/index_pattern.test.ts | 10 +- .../index_patterns/index_pattern.ts | 8 +- .../query/filter_manager/compare_filters.ts | 2 +- .../saved_objects_client_wrapper.ts | 11 +- src/plugins/data/public/public.api.md | 4 +- .../query/filter_manager/filter_manager.ts | 2 +- .../filter_manager/lib/generate_filters.ts | 2 +- .../filter_manager/lib/mappers/map_range.ts | 6 +- .../data/public/search/aggs/agg_config.ts | 16 +- .../public/search/aggs/agg_configs.test.ts | 8 +- .../public/search/aggs/buckets/filters.ts | 2 +- .../public/search/aggs/buckets/ip_range.ts | 4 +- .../buckets/lib/time_buckets/time_buckets.ts | 2 +- .../buckets/migrate_include_exclude_format.ts | 2 +- .../lib/get_response_agg_config_class.ts | 4 +- .../search/aggs/metrics/std_deviation.ts | 2 +- .../public/search/aggs/param_types/json.ts | 2 +- .../data/public/search/expressions/esaggs.ts | 6 +- .../search/search_source/search_source.ts | 19 +- .../ui/search_bar/create_search_bar.tsx | 1 + .../field_capabilities/field_capabilities.ts | 4 +- .../fetcher/lib/resolve_time_pattern.ts | 4 +- .../saved_objects/index_pattern_migrations.ts | 4 +- .../server/saved_objects/index_patterns.ts | 2 +- .../data/server/saved_objects/search.ts | 2 +- .../server/saved_objects/search_migrations.ts | 8 +- .../angular/context/query/actions.js | 2 +- .../sidebar/lib/field_calculator.test.ts | 2 +- .../discover/public/kibana_services.ts | 2 + .../components/cron_editor/cron_editor.js | 6 +- .../specs/kibana_context.ts | 4 +- .../expression_types/specs/datatable.ts | 6 +- .../specs/kibana_datatable.ts | 4 +- src/plugins/expressions/public/loader.ts | 3 +- .../edit_index_pattern/tabs/utils.ts | 4 +- .../filter_manager/phrase_filter_manager.ts | 6 +- .../adapters/request/request_adapter.ts | 1 - .../public/views/data/lib/export_csv.ts | 2 +- .../table_list_view/table_list_view.tsx | 4 +- .../common/url/encode_uri_query.ts | 2 +- .../public/top_nav_menu/top_nav_menu_item.tsx | 6 +- .../public/lib/create_field_list.ts | 6 +- .../saved_objects_table_page.tsx | 2 +- .../public/components/agg_params_helper.ts | 2 +- .../controls/components/input_list.tsx | 4 +- .../controls/components/number_list/utils.ts | 2 +- .../public/components/controls/filters.tsx | 6 +- .../components/controls/number_interval.tsx | 2 +- .../components/controls/time_interval.tsx | 2 +- .../public/components/sidebar/data_tab.tsx | 5 +- .../vis_default_editor/public/schemas.ts | 1 + .../components/metric_vis_component.tsx | 5 +- .../public/helpers/panel_utils.ts | 4 +- .../public/timelion_vis_fn.ts | 7 +- .../server/fit_functions/average.js | 2 +- .../server/handlers/chain_runner.js | 2 +- .../server/handlers/lib/validate_arg.js | 2 +- .../vis_type_timelion/server/lib/as_sorted.js | 2 +- .../server/lib/classes/timelion_function.js | 2 +- .../server/lib/load_functions.js | 2 +- .../vis_type_timelion/server/lib/reduce.js | 2 +- .../server/lib/unzip_pairs.js | 2 +- .../es/lib/agg_response_to_series_list.js | 2 +- .../series_functions/es/lib/build_request.js | 2 +- .../server/series_functions/movingaverage.js | 2 +- .../server/series_functions/movingstd.js | 2 +- .../server/series_functions/points.js | 2 +- .../server/series_functions/static.test.js | 2 +- .../application/components/aggs/agg_row.tsx | 2 +- .../components/lib/series_change_handler.js | 2 +- .../server/lib/get_fields.ts | 4 +- .../server/saved_objects/tsvb_telemetry.ts | 4 +- src/plugins/vis_type_vega/public/vega_fn.ts | 7 +- .../components/options/metrics_axes/utils.ts | 4 +- .../components/labels/flatten_series.js | 2 +- .../vislib/components/labels/labels.test.js | 4 +- .../vislib/components/labels/uniq_labels.js | 2 +- .../vislib/components/legend/legend.tsx | 4 +- .../vislib/components/legend/pie_utils.ts | 4 +- .../components/tooltip/position_tooltip.js | 4 +- .../vislib/components/tooltip/tooltip.js | 2 +- .../components/zero_injection/flatten_data.js | 4 +- .../helpers/point_series/_get_series.ts | 2 +- .../vis_type_vislib/public/vislib/lib/data.js | 8 +- .../public/vislib/lib/dispatch.js | 4 +- .../public/persisted_state/persisted_state.ts | 17 +- .../saved_visualizations/find_list_items.ts | 2 +- .../wizard/type_selection/type_selection.tsx | 4 +- .../saved_objects/visualization_migrations.ts | 58 +- .../utils/create_visualize_app_state.ts | 6 +- .../application/utils/migrate_app_state.ts | 2 +- src/setup_node_env/harden.js | 24 - .../{patches => harden}/child_process.js | 5 +- .../setup_node_env/harden/index.js | 6 +- src/setup_node_env/harden/lodash_template.js | 68 + src/test_utils/get_url.js | 2 +- src/test_utils/kbn_server.ts | 2 +- .../apis/saved_objects/migrations.js | 2 +- .../apps/management/_import_objects.js | 14 +- test/functional/services/common/browser.ts | 6 +- test/harden/lodash_template.js | 181 +++ test/tsconfig.json | 1 - .../services/visual_testing/visual_testing.ts | 1 - .../beats/elasticsearch_beats_adapter.ts | 16 +- ...asticsearch_configuration_block_adapter.ts | 4 +- .../tags/elasticsearch_tags_adapter.ts | 8 +- .../tokens/elasticsearch_tokens_adapter.ts | 4 +- x-pack/package.json | 8 +- .../server/builtin_action_types/case/utils.ts | 6 +- .../server/usage/actions_usage_collector.ts | 2 +- x-pack/plugins/alerts/server/alerts_client.ts | 4 +- .../task_runner/create_execution_handler.ts | 4 +- .../alerts/server/task_runner/task_runner.ts | 19 +- .../task_runner/transform_action_params.ts | 4 +- .../server/usage/alerts_usage_collector.ts | 2 +- .../util/merge_projection/index.ts | 4 +- .../ErrorGroupDetails/DetailView/index.tsx | 4 +- .../ErrorGroupDetails/Distribution/index.tsx | 2 +- .../ServiceIntegrations/WatcherFlyout.tsx | 4 +- .../__test__/createErrorGroupWatch.test.ts | 2 +- .../app/TransactionDetails/index.tsx | 1 - .../components/shared/ManagedTable/index.tsx | 5 +- .../components/shared/Stacktrace/index.tsx | 2 +- .../shared/TransactionActionMenu/sections.ts | 6 +- .../shared/charts/ErrorRateChart/index.tsx | 2 +- .../context/LoadingIndicatorContext.tsx | 4 +- .../context/UrlParamsContext/helpers.ts | 6 +- .../services/rest/observability_dashboard.ts | 2 +- ...et_service_map_from_trace_ids.test.ts.snap | 222 ++++ .../fetch_service_paths_from_trace_ids.ts | 232 ++++ .../get_service_map_from_trace_ids.test.ts | 28 + .../get_service_map_from_trace_ids.ts | 293 +---- ...ce_map_from_trace_ids_script_response.json | 1165 +++++++++++++++++ .../transform_service_map_responses.ts | 4 +- .../lib/transaction_groups/transform.ts | 4 +- .../lib/transactions/breakdown/index.ts | 10 +- .../lib/ui_filters/local_ui_filters/index.ts | 4 +- .../apm/server/routes/create_api/index.ts | 1 + x-pack/plugins/apm/server/routes/services.ts | 4 +- x-pack/plugins/apm/typings/lodash.mean.d.ts | 10 - .../public/components/enroll_beats.tsx | 8 +- .../components/navigation/connected_link.tsx | 2 + .../components/table/table_type_configs.tsx | 6 +- .../adapters/beats/memory_beats_adapter.ts | 10 +- .../beats_management/public/lib/framework.ts | 2 +- .../canvas/.storybook/webpack.dll.config.js | 1 - .../canvas_plugin_src/functions/common/pie.ts | 4 +- .../functions/common/plot/get_tick_hash.ts | 12 +- .../functions/common/plot/index.ts | 4 +- .../common/plot/series_style_to_flot.ts | 12 +- .../functions/server/pointseries/index.ts | 6 +- .../time_filter/components/time_filter.tsx | 6 +- .../uis/arguments/palette.tsx | 2 +- .../canvas_plugin_src/uis/views/plot.js | 4 +- .../canvas/common/lib/pivot_object_array.ts | 5 +- .../components/enhance/error_boundary.tsx | 56 +- .../components/function_form/function_form.js | 1 - .../public/components/item_grid/item_grid.tsx | 18 +- .../public/components/workpad_config/index.ts | 8 +- .../workpad_loader/workpad_loader.js | 4 +- .../workpad_templates/workpad_templates.tsx | 4 +- .../series_style/extended_template.tsx | 2 +- .../canvas/public/functions/filters.ts | 2 +- x-pack/plugins/canvas/public/lib/keymap.ts | 2 + .../plugins/canvas/public/lib/modify_path.js | 2 +- .../lib/template_from_react_component.tsx | 6 +- .../public/state/selectors/resolved_args.ts | 2 +- .../canvas/public/state/selectors/workpad.ts | 30 +- .../collectors/custom_element_collector.ts | 2 +- .../collectors/workpad_collector.test.ts | 6 +- .../server/collectors/workpad_collector.ts | 10 +- .../canvas/server/routes/workpad/update.ts | 6 +- .../plugins/dashboard_mode/public/plugin.ts | 4 +- .../providers/kql_query_suggestion/index.ts | 4 +- .../event_log/server/event_log_service.ts | 1 - .../server/event_log_start_service.ts | 1 - .../server/ui_capabilities_for_features.ts | 4 +- x-pack/plugins/graph/server/routes/explore.ts | 2 +- .../public/extend_index_management/index.js | 4 +- .../index_actions_context_menu.js | 8 +- .../inventory/components/expression.tsx | 2 +- .../components/expression.tsx | 2 +- .../components/expression_chart.tsx | 9 +- .../lib/transform_metrics_explorer_data.ts | 4 +- .../public/pages/link_to/redirect_to_logs.tsx | 4 +- .../pages/link_to/redirect_to_node_logs.tsx | 4 +- .../components/waffle/legend_controls.tsx | 4 +- .../inventory_view/lib/color_from_value.ts | 18 +- .../inventory_view/lib/nodes_to_wafflemap.ts | 2 +- .../metric_detail/components/helpers.ts | 2 +- .../metrics_explorer/components/chart.tsx | 5 +- .../evaluate_condition.ts | 2 +- .../inventory_metric_threshold_executor.ts | 2 +- ...review_inventory_metric_threshold_alert.ts | 2 +- .../metric_threshold_executor.ts | 8 +- .../preview_metric_threshold_alert.ts | 9 +- .../server/lib/snapshot/response_helpers.ts | 2 +- .../infra/server/routes/ip_to_hostname.ts | 2 +- .../infra/server/routes/metadata/index.ts | 2 +- .../server/utils/create_afterkey_handler.ts | 2 +- .../editor_frame_service/editor_frame/save.ts | 2 +- .../change_indexpattern.tsx | 1 - .../indexpattern_datasource/datapanel.tsx | 4 +- .../dimension_panel/bucket_nesting_editor.tsx | 1 - .../dimension_panel/popover_editor.tsx | 2 +- .../indexpattern_suggestions.ts | 14 +- .../indexpattern_datasource/layerpanel.tsx | 1 - .../public/indexpattern_datasource/loader.ts | 2 +- .../operations/operations.ts | 1 - .../indexpattern_datasource/state_helpers.ts | 2 +- .../indexpattern_datasource/to_expression.ts | 1 - .../public/indexpattern_datasource/utils.ts | 1 - .../xy_visualization/xy_visualization.tsx | 2 +- .../pipeline_list_item/pipeline_list_item.js | 4 +- .../logstash/server/models/cluster/cluster.ts | 2 +- .../server/models/pipeline/pipeline.ts | 10 +- .../pipeline_list_item/pipeline_list_item.ts | 6 +- .../update_source_editor.tsx | 1 + .../categorical_field_meta_popover.tsx | 1 - .../maps/public/classes/util/data_request.ts | 1 - .../server/maps_telemetry/maps_telemetry.ts | 12 +- .../explorer_charts_container_service.js | 2 +- .../public/application/util/string_utils.js | 2 +- .../models/data_visualizer/data_visualizer.ts | 10 +- .../monitoring/public/angular/app_modules.ts | 4 +- .../public/components/alerts/alerts.js | 4 +- .../public/components/alerts/map_severity.js | 4 +- .../shard_allocation/lib/decorate_shards.js | 4 +- .../monitoring/public/components/logs/logs.js | 6 +- .../public/lib/ajax_error_handler.tsx | 4 +- .../monitoring/public/lib/form_validation.ts | 4 +- .../monitoring/public/lib/route_init.js | 2 +- .../monitoring/public/lib/setup_mode.tsx | 4 +- .../monitoring/public/services/license.js | 4 +- .../monitoring/server/lib/apm/get_apm_info.js | 6 +- .../monitoring/server/lib/apm/get_apms.js | 6 +- .../server/lib/beats/_beats_stats.js | 4 +- .../server/lib/beats/get_beat_summary.js | 6 +- .../monitoring/server/lib/beats/get_beats.js | 6 +- .../server/lib/beats/get_latest_stats.js | 4 +- .../server/lib/elasticsearch/get_ml_jobs.js | 4 +- .../nodes/get_nodes/map_nodes_metrics.js | 10 +- .../nodes/get_nodes/sort_nodes.js | 4 +- .../server/lib/logstash/sort_pipelines.js | 4 +- .../lib/tasks/visualizations/task_runner.ts | 2 +- .../panel_actions/get_csv_panel_action.tsx | 1 + .../chromium/driver/chromium_driver.ts | 4 +- .../reporting/server/config/create_config.ts | 4 +- .../execute_job/omit_blacklisted_headers.ts | 4 +- .../csv/server/lib/flatten_hit.ts | 4 +- .../server/usage/get_reporting_usage.ts | 20 +- .../sections/job_create/job_create.js | 5 +- .../sections/job_create/steps/step_metrics.js | 2 +- .../sections/job_create/steps_config/index.js | 4 +- .../job_create_clone.test.js | 5 +- .../job_create_date_histogram.test.js | 5 +- .../job_create_histogram.test.js | 5 +- .../job_create_logistics.test.js | 5 +- .../job_create_metrics.test.js | 5 +- .../job_create_review.test.js | 5 +- .../job_create_terms.test.js | 5 +- .../client_integration/job_list_clone.test.js | 5 +- .../rollup/server/collectors/register.ts | 8 +- .../rollup_search_strategy.ts | 4 +- .../register_fields_for_wildcard_route.ts | 4 +- .../components/profile_tree/init_data.ts | 4 +- .../components/profile_tree/unsafe_utils.ts | 8 +- .../feature_table/change_all_privileges.tsx | 4 +- .../kibana/feature_table/feature_table.tsx | 1 - .../privilege_display.tsx | 2 +- .../privilege_space_table.tsx | 1 - .../roles/model/kibana_privilege.ts | 2 +- .../change_password_form.tsx | 1 + .../register_privileges_with_cluster.ts | 4 +- x-pack/plugins/security_solution/package.json | 2 - .../extract_tactics_techniques_mitre.js | 1 + .../restore_table/restore_table.tsx | 4 +- .../routes/api/external/copy_to_space.ts | 2 +- .../server/lib/get_template_version.ts | 8 +- .../plugins/task_manager/server/task_pool.ts | 4 +- .../task_manager/server/task_runner.ts | 2 +- .../task_manager/server/task_store.test.ts | 4 +- .../plugins/task_manager/server/task_store.ts | 2 +- .../lib/check_action_type_enabled.tsx | 6 +- .../components/alert_details.tsx | 4 +- .../components/alert_instances.tsx | 4 +- .../public/common/index_controls/index.ts | 3 +- .../components/tabs/checkup/constants.tsx | 4 +- .../__tests__/integration_group.test.tsx | 95 +- .../actions_popover/integration_group.tsx | 29 +- .../monitor_status_list.tsx | 8 +- .../monitor_list_status_column.tsx | 6 +- .../framework/new_platform_adapter.tsx | 3 +- .../observability_integration/build_href.ts | 2 +- .../__tests__/enrich_monitor_groups.test.ts | 98 ++ .../requests/search/enrich_monitor_groups.ts | 46 +- .../threshold_watch_edit.tsx | 1 + .../models/execute_details/execute_details.js | 6 +- .../lib/get_watch_type/get_watch_type.js | 4 +- .../apis/metrics_ui/metrics.ts | 6 +- .../apis/metrics_ui/metrics_explorer.ts | 10 +- .../apis/metrics_ui/snapshot.ts | 28 +- .../apis/security/privileges.ts | 4 +- .../apis/security/privileges_basic.ts | 4 +- .../trial/tests/annotations.ts | 2 +- .../apps/lens/persistent_context.ts | 1 - .../test/functional/apps/lens/smokescreen.ts | 1 - .../apps/security/doc_level_security_roles.js | 6 +- .../apps/security/field_level_security.js | 10 +- .../functional/apps/security/rbac_phase1.js | 6 +- .../apps/security/secure_roles_perm.js | 4 +- .../functional/apps/security/user_email.js | 4 +- x-pack/test/functional/apps/security/users.js | 12 +- .../functional/apps/watcher/watcher_test.js | 4 +- .../apps/triggers_actions_ui/details.ts | 2 +- .../task_manager_performance/package.json | 1 - .../task_manager_performance/server/plugin.ts | 4 +- x-pack/typings/index.d.ts | 5 - yarn.lock | 74 +- 413 files changed, 3180 insertions(+), 1354 deletions(-) delete mode 100644 src/setup_node_env/harden.js rename src/setup_node_env/{patches => harden}/child_process.js (97%) rename typings/lodash.topath/index.d.ts => src/setup_node_env/harden/index.js (87%) create mode 100644 src/setup_node_env/harden/lodash_template.js create mode 100644 test/harden/lodash_template.js create mode 100644 x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap create mode 100644 x-pack/plugins/apm/server/lib/service_map/fetch_service_paths_from_trace_ids.ts create mode 100644 x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts create mode 100644 x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json delete mode 100644 x-pack/plugins/apm/typings/lodash.mean.d.ts create mode 100644 x-pack/plugins/uptime/server/lib/requests/search/__tests__/enrich_monitor_groups.test.ts diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformat.tojson.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformat.tojson.md index 5fa7d4841537b..48ec9456c56dd 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformat.tojson.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformat.tojson.md @@ -12,14 +12,14 @@ Serialize this format to a simple POJO, with only the params that are not defaul ```typescript toJSON(): { - id: unknown; - params: _.Dictionary | undefined; + id: any; + params: any; }; ``` Returns: `{ - id: unknown; - params: _.Dictionary | undefined; + id: any; + params: any; }` diff --git a/package.json b/package.json index b1dd8686f818b..3c15d9ee3c97b 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,9 @@ "**/@types/angular": "^1.6.56", "**/@types/hoist-non-react-statics": "^3.3.1", "**/@types/chai": "^4.2.11", + "**/cypress/@types/lodash": "^4.14.155", "**/typescript": "3.9.5", - "**/graphql-toolkit/lodash": "^4.17.13", + "**/graphql-toolkit/lodash": "^4.17.15", "**/hoist-non-react-statics": "^3.3.2", "**/isomorphic-git/**/base64-js": "^1.2.1", "**/image-diff/gm/debug": "^2.6.9", @@ -213,8 +214,7 @@ "leaflet.heat": "0.2.0", "less": "npm:@elastic/less@2.7.3-kibana", "less-loader": "5.0.0", - "lodash": "npm:@elastic/lodash@3.10.1-kibana4", - "lodash.clonedeep": "^4.5.0", + "lodash": "^4.17.15", "lru-cache": "4.1.5", "markdown-it": "^10.0.0", "mini-css-extract-plugin": "0.8.0", @@ -355,8 +355,7 @@ "@types/json5": "^0.0.30", "@types/license-checker": "15.0.0", "@types/listr": "^0.14.0", - "@types/lodash": "^3.10.1", - "@types/lodash.clonedeep": "^4.5.4", + "@types/lodash": "^4.14.155", "@types/lru-cache": "^5.1.0", "@types/markdown-it": "^0.0.7", "@types/minimatch": "^2.0.29", diff --git a/packages/kbn-config-schema/package.json b/packages/kbn-config-schema/package.json index 015dca128ce91..10b607dcd4312 100644 --- a/packages/kbn-config-schema/package.json +++ b/packages/kbn-config-schema/package.json @@ -14,6 +14,7 @@ "tsd": "^0.7.4" }, "peerDependencies": { + "lodash": "^4.17.15", "joi": "^13.5.2", "moment": "^2.24.0", "type-detect": "^4.0.8" diff --git a/packages/kbn-interpreter/package.json b/packages/kbn-interpreter/package.json index ea72a4a48caeb..c6bb06e68b9c0 100644 --- a/packages/kbn-interpreter/package.json +++ b/packages/kbn-interpreter/package.json @@ -11,8 +11,7 @@ "dependencies": { "@babel/runtime": "^7.10.2", "@kbn/i18n": "1.0.0", - "lodash": "npm:@elastic/lodash@3.10.1-kibana4", - "lodash.clone": "^4.5.0", + "lodash": "^4.17.15", "uuid": "3.3.2" }, "devDependencies": { diff --git a/packages/kbn-interpreter/src/common/lib/registry.js b/packages/kbn-interpreter/src/common/lib/registry.js index 25b122f400711..16572cf494cd3 100644 --- a/packages/kbn-interpreter/src/common/lib/registry.js +++ b/packages/kbn-interpreter/src/common/lib/registry.js @@ -17,7 +17,7 @@ * under the License. */ -import clone from 'lodash.clone'; +import { clone } from 'lodash'; export class Registry { constructor(prop = 'name') { diff --git a/packages/kbn-plugin-generator/index.js b/packages/kbn-plugin-generator/index.js index e61037e42d63f..398b49fa1ecd5 100644 --- a/packages/kbn-plugin-generator/index.js +++ b/packages/kbn-plugin-generator/index.js @@ -23,7 +23,7 @@ const dedent = require('dedent'); const sao = require('sao'); const chalk = require('chalk'); const getopts = require('getopts'); -const snakeCase = require('lodash.snakecase'); +const { snakeCase } = require('lodash'); exports.run = function run(argv) { const options = getopts(argv, { @@ -41,7 +41,7 @@ exports.run = function run(argv) { if (options.help) { console.log( dedent(chalk` - # {dim Usage:} + # {dim Usage:} node scripts/generate-plugin {bold [name]} Generate a fresh Kibana plugin in the plugins/ directory `) + '\n' diff --git a/packages/kbn-plugin-generator/package.json b/packages/kbn-plugin-generator/package.json index b9df67b32e5d3..5c1e98cd869de 100644 --- a/packages/kbn-plugin-generator/package.json +++ b/packages/kbn-plugin-generator/package.json @@ -8,10 +8,7 @@ "dedent": "^0.7.0", "execa": "^4.0.2", "getopts": "^2.2.4", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", + "lodash": "^4.17.15", "sao": "^0.22.12" } } diff --git a/packages/kbn-plugin-generator/sao_template/sao.js b/packages/kbn-plugin-generator/sao_template/sao.js index 7fc29b1e6bd0a..dc4d8a2fc10fb 100755 --- a/packages/kbn-plugin-generator/sao_template/sao.js +++ b/packages/kbn-plugin-generator/sao_template/sao.js @@ -20,9 +20,7 @@ const { relative, resolve } = require('path'); const fs = require('fs'); -const startCase = require('lodash.startcase'); -const camelCase = require('lodash.camelcase'); -const snakeCase = require('lodash.snakecase'); +const { camelCase, startCase, snakeCase } = require('lodash'); const chalk = require('chalk'); const execa = require('execa'); diff --git a/packages/kbn-pm/package.json b/packages/kbn-pm/package.json index 3e7ed49c61314..188db0a8321a2 100644 --- a/packages/kbn-pm/package.json +++ b/packages/kbn-pm/package.json @@ -22,7 +22,7 @@ "@types/glob": "^5.0.35", "@types/globby": "^6.1.0", "@types/has-ansi": "^3.0.0", - "@types/lodash.clonedeepwith": "^4.5.3", + "@types/lodash": "^4.14.155", "@types/log-symbols": "^2.0.0", "@types/ncp": "^2.0.1", "@types/node": ">=10.17.17 <10.20.0", @@ -46,7 +46,7 @@ "globby": "^8.0.1", "has-ansi": "^3.0.0", "is-path-inside": "^3.0.2", - "lodash.clonedeepwith": "^4.5.0", + "lodash": "^4.17.15", "log-symbols": "^2.2.0", "multimatch": "^4.0.0", "ncp": "^2.0.0", diff --git a/packages/kbn-pm/src/test_helpers/absolute_path_snapshot_serializer.ts b/packages/kbn-pm/src/test_helpers/absolute_path_snapshot_serializer.ts index 96ce6fd1d919a..cf4ecbb4ad42c 100644 --- a/packages/kbn-pm/src/test_helpers/absolute_path_snapshot_serializer.ts +++ b/packages/kbn-pm/src/test_helpers/absolute_path_snapshot_serializer.ts @@ -17,7 +17,7 @@ * under the License. */ -import cloneDeepWith from 'lodash.clonedeepwith'; +import { cloneDeepWith } from 'lodash'; import { resolve, sep as pathSep } from 'path'; const repoRoot = resolve(__dirname, '../../../../'); diff --git a/packages/kbn-storybook/lib/webpack.dll.config.js b/packages/kbn-storybook/lib/webpack.dll.config.js index 534f503e2956a..740ee3819c36f 100644 --- a/packages/kbn-storybook/lib/webpack.dll.config.js +++ b/packages/kbn-storybook/lib/webpack.dll.config.js @@ -54,7 +54,6 @@ module.exports = { 'highlight.js', 'html-entities', 'jquery', - 'lodash.clone', 'lodash', 'markdown-it', 'mocha', diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index 042de2617565e..0c49ccf276b2b 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -14,6 +14,7 @@ "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", "@types/joi": "^13.4.2", + "@types/lodash": "^4.14.155", "@types/parse-link-header": "^1.0.0", "@types/puppeteer": "^3.0.0", "@types/strip-ansi": "^5.2.1", @@ -28,6 +29,7 @@ "getopts": "^2.2.4", "glob": "^7.1.2", "joi": "^13.5.2", + "lodash": "^4.17.15", "parse-link-header": "^1.0.1", "puppeteer": "^3.3.0", "rxjs": "^6.5.5", diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/config.ts b/packages/kbn-test/src/functional_test_runner/lib/config/config.ts index e38520f00e45b..687a0e87d4c68 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/config.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/config.ts @@ -18,10 +18,7 @@ */ import { Schema } from 'joi'; -import { cloneDeep, get, has } from 'lodash'; - -// @ts-ignore internal lodash module is not typed -import toPath from 'lodash/internal/toPath'; +import { cloneDeepWith, get, has, toPath } from 'lodash'; import { schema } from './schema'; @@ -114,7 +111,7 @@ export class Config { throw new Error(`Unknown config key "${key}"`); } - return cloneDeep(get(this[$values], key, defaultValue), (v) => { + return cloneDeepWith(get(this[$values], key, defaultValue), (v) => { if (typeof v === 'function') { return v; } @@ -122,7 +119,7 @@ export class Config { } public getAll() { - return cloneDeep(this[$values], (v) => { + return cloneDeepWith(this[$values], (v) => { if (typeof v === 'function') { return v; } diff --git a/packages/kbn-test/src/legacy_es/legacy_es_test_cluster.js b/packages/kbn-test/src/legacy_es/legacy_es_test_cluster.js index f795b32d78b8e..2d4c461cc2c2e 100644 --- a/packages/kbn-test/src/legacy_es/legacy_es_test_cluster.js +++ b/packages/kbn-test/src/legacy_es/legacy_es_test_cluster.js @@ -19,8 +19,7 @@ import { resolve } from 'path'; import { format } from 'url'; -import { get } from 'lodash'; -import toPath from 'lodash/internal/toPath'; +import { get, toPath } from 'lodash'; import { Cluster } from '@kbn/es'; import { CI_PARALLEL_PROCESS_PREFIX } from '../ci_parallel_process_prefix'; import { esTestConfig } from './es_test_config'; diff --git a/packages/kbn-test/src/page_load_metrics/navigation.ts b/packages/kbn-test/src/page_load_metrics/navigation.ts index 21dc681951b21..db53df789ac69 100644 --- a/packages/kbn-test/src/page_load_metrics/navigation.ts +++ b/packages/kbn-test/src/page_load_metrics/navigation.ts @@ -19,7 +19,6 @@ import Fs from 'fs'; import Url from 'url'; -import _ from 'lodash'; import puppeteer from 'puppeteer'; import { resolve } from 'path'; import { ToolingLog } from '@kbn/dev-utils'; diff --git a/packages/kbn-ui-framework/Gruntfile.js b/packages/kbn-ui-framework/Gruntfile.js index 177fd1f153155..b7ba1e87b2f00 100644 --- a/packages/kbn-ui-framework/Gruntfile.js +++ b/packages/kbn-ui-framework/Gruntfile.js @@ -21,7 +21,7 @@ const sass = require('node-sass'); const postcss = require('postcss'); const postcssConfig = require('../../src/optimize/postcss.config'); const chokidar = require('chokidar'); -const debounce = require('lodash/function/debounce'); +const { debounce } = require('lodash'); const platform = require('os').platform(); const isPlatformWindows = /^win/.test(platform); diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json index 4da4fb21fbed5..abf64906e0253 100644 --- a/packages/kbn-ui-framework/package.json +++ b/packages/kbn-ui-framework/package.json @@ -17,7 +17,7 @@ "dependencies": { "classnames": "2.2.6", "focus-trap-react": "^3.1.1", - "lodash": "npm:@elastic/lodash@3.10.1-kibana4", + "lodash": "^4.17.15", "prop-types": "15.6.0", "react": "^16.12.0", "react-ace": "^5.9.0", diff --git a/renovate.json5 b/renovate.json5 index 49a255d60f29e..5a807b4b090c1 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -557,22 +557,6 @@ '@types/lodash', ], }, - { - groupSlug: 'lodash.clonedeep', - groupName: 'lodash.clonedeep related packages', - packageNames: [ - 'lodash.clonedeep', - '@types/lodash.clonedeep', - ], - }, - { - groupSlug: 'lodash.clonedeepwith', - groupName: 'lodash.clonedeepwith related packages', - packageNames: [ - 'lodash.clonedeepwith', - '@types/lodash.clonedeepwith', - ], - }, { groupSlug: 'log-symbols', groupName: 'log-symbols related packages', diff --git a/src/apm.js b/src/apm.js index 6c10539c6b7d3..effa6c77d7614 100644 --- a/src/apm.js +++ b/src/apm.js @@ -20,7 +20,7 @@ const { join } = require('path'); const { readFileSync } = require('fs'); const { execSync } = require('child_process'); -const merge = require('lodash.merge'); +const { merge } = require('lodash'); const { name, version, build } = require('../package.json'); const ROOT_DIR = join(__dirname, '..'); diff --git a/src/cli/cluster/cluster_manager.test.ts b/src/cli/cluster/cluster_manager.test.ts index 66f68f815edac..2ddccae2fada6 100644 --- a/src/cli/cluster/cluster_manager.test.ts +++ b/src/cli/cluster/cluster_manager.test.ts @@ -93,7 +93,7 @@ describe('CLI cluster manager', () => { } const football = {}; - const messenger = sample(manager.workers); + const messenger = sample(manager.workers) as any; messenger.emit('broadcast', football); for (const worker of manager.workers) { diff --git a/src/cli/cluster/worker.ts b/src/cli/cluster/worker.ts index dc6e6d5676651..097a549187429 100644 --- a/src/cli/cluster/worker.ts +++ b/src/cli/cluster/worker.ts @@ -177,7 +177,7 @@ export class Worker extends EventEmitter { } flushChangeBuffer() { - const files = _.unique(this.changes.splice(0)); + const files = _.uniq(this.changes.splice(0)); const prefix = files.length > 1 ? '\n - ' : ''; return files.reduce(function (list, file) { return `${list || ''}${prefix}"${file}"`; diff --git a/src/cli/help.js b/src/cli/help.js index 656944d85b254..0170cb53e19df 100644 --- a/src/cli/help.js +++ b/src/cli/help.js @@ -72,7 +72,7 @@ function commandsSummary(program) { }, 0); return cmds.reduce(function (help, cmd) { - return `${help || ''}${_.padRight(cmd[0], cmdLColWidth)} ${cmd[1] || ''}\n`; + return `${help || ''}${_.padEnd(cmd[0], cmdLColWidth)} ${cmd[1] || ''}\n`; }, ''); } diff --git a/src/core/public/http/fetch.ts b/src/core/public/http/fetch.ts index bf9b4235e9444..e31094d96f3d4 100644 --- a/src/core/public/http/fetch.ts +++ b/src/core/public/http/fetch.ts @@ -17,7 +17,7 @@ * under the License. */ -import { merge } from 'lodash'; +import { omitBy } from 'lodash'; import { format } from 'url'; import { BehaviorSubject } from 'rxjs'; @@ -42,6 +42,10 @@ interface Params { const JSON_CONTENT = /^(application\/(json|x-javascript)|text\/(x-)?javascript|x-json)(;.*)?$/; const NDJSON_CONTENT = /^(application\/ndjson)(;.*)?$/; +const removedUndefined = (obj: Record | undefined) => { + return omitBy(obj, (v) => v === undefined); +}; + export class Fetch { private readonly interceptors = new Set(); private readonly requestCount$ = new BehaviorSubject(0); @@ -119,24 +123,23 @@ export class Fetch { asResponse, asSystemRequest, ...fetchOptions - } = merge( - { - method: 'GET', - credentials: 'same-origin', - prependBasePath: true, - }, - options, - { - headers: { - 'Content-Type': 'application/json', - ...options.headers, - 'kbn-version': this.params.kibanaVersion, - }, - } - ); + } = { + method: 'GET', + credentials: 'same-origin', + prependBasePath: true, + ...options, + // options can pass an `undefined` Content-Type to erase the default value. + // however we can't pass it to `fetch` as it will send an `Content-Type: Undefined` header + headers: removedUndefined({ + 'Content-Type': 'application/json', + ...options.headers, + 'kbn-version': this.params.kibanaVersion, + }), + }; + const url = format({ pathname: shouldPrependBasePath ? this.params.basePath.prepend(options.path) : options.path, - query, + query: removedUndefined(query), }); // Make sure the system request header is only present if `asSystemRequest` is true. @@ -144,7 +147,7 @@ export class Fetch { fetchOptions.headers['kbn-system-request'] = 'true'; } - return new Request(url, fetchOptions); + return new Request(url, fetchOptions as RequestInit); } private async fetchResponse(fetchOptions: HttpFetchOptionsWithPath): Promise> { diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index cb8671ba37a6c..7dc5f3655fca0 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -91,7 +91,7 @@ describe('PluginsService', () => { context: contextServiceMock.createSetupContract(), fatalErrors: fatalErrorsServiceMock.createSetupContract(), http: httpServiceMock.createSetupContract(), - injectedMetadata: pick(injectedMetadataServiceMock.createStartContract(), 'getInjectedVar'), + injectedMetadata: injectedMetadataServiceMock.createStartContract(), notifications: notificationServiceMock.createSetupContract(), uiSettings: uiSettingsServiceMock.createSetupContract(), }; @@ -99,6 +99,7 @@ describe('PluginsService', () => { ...mockSetupDeps, application: expect.any(Object), getStartServices: expect.any(Function), + injectedMetadata: pick(mockSetupDeps.injectedMetadata, 'getInjectedVar'), }; mockStartDeps = { application: applicationServiceMock.createInternalStartContract(), @@ -106,7 +107,7 @@ describe('PluginsService', () => { http: httpServiceMock.createStartContract(), chrome: chromeServiceMock.createStartContract(), i18n: i18nServiceMock.createStartContract(), - injectedMetadata: pick(injectedMetadataServiceMock.createStartContract(), 'getInjectedVar'), + injectedMetadata: injectedMetadataServiceMock.createStartContract(), notifications: notificationServiceMock.createStartContract(), overlays: overlayServiceMock.createStartContract(), uiSettings: uiSettingsServiceMock.createStartContract(), @@ -117,6 +118,7 @@ describe('PluginsService', () => { ...mockStartDeps, application: expect.any(Object), chrome: omit(mockStartDeps.chrome, 'getComponent'), + injectedMetadata: pick(mockStartDeps.injectedMetadata, 'getInjectedVar'), }; // Reset these for each test. diff --git a/src/core/public/saved_objects/saved_objects_client.ts b/src/core/public/saved_objects/saved_objects_client.ts index cb279b2cc4c8f..c4daaf5d7f307 100644 --- a/src/core/public/saved_objects/saved_objects_client.ts +++ b/src/core/public/saved_objects/saved_objects_client.ts @@ -162,7 +162,9 @@ export class SavedObjectsClient { }); if (!foundObject) { - return queueItem.resolve(this.createSavedObject(pick(queueItem, ['id', 'type']))); + return queueItem.resolve( + this.createSavedObject(pick(queueItem, ['id', 'type']) as SavedObject) + ); } queueItem.resolve(foundObject); diff --git a/src/core/public/saved_objects/simple_saved_object.ts b/src/core/public/saved_objects/simple_saved_object.ts index d3ba506b865a4..165ef98be91d4 100644 --- a/src/core/public/saved_objects/simple_saved_object.ts +++ b/src/core/public/saved_objects/simple_saved_object.ts @@ -60,7 +60,7 @@ export class SimpleSavedObject { } public set(key: string, value: any): T { - return set(this.attributes, key, value); + return set(this.attributes as any, key, value); } public has(key: string): boolean { diff --git a/src/core/server/capabilities/merge_capabilities.ts b/src/core/server/capabilities/merge_capabilities.ts index 95296346ad835..06869089598a9 100644 --- a/src/core/server/capabilities/merge_capabilities.ts +++ b/src/core/server/capabilities/merge_capabilities.ts @@ -17,11 +17,11 @@ * under the License. */ -import { merge } from 'lodash'; +import { mergeWith } from 'lodash'; import { Capabilities } from './types'; export const mergeCapabilities = (...sources: Array>): Capabilities => - merge({}, ...sources, (a: any, b: any) => { + mergeWith({}, ...sources, (a: any, b: any) => { if ( (typeof a === 'boolean' && typeof b === 'object') || (typeof a === 'object' && typeof b === 'boolean') diff --git a/src/core/server/config/deprecation/core_deprecations.ts b/src/core/server/config/deprecation/core_deprecations.ts index 483534e0c145b..715f5b883139f 100644 --- a/src/core/server/config/deprecation/core_deprecations.ts +++ b/src/core/server/config/deprecation/core_deprecations.ts @@ -39,10 +39,7 @@ const dataPathDeprecation: ConfigDeprecation = (settings, fromPath, log) => { }; const xsrfDeprecation: ConfigDeprecation = (settings, fromPath, log) => { - if ( - has(settings, 'server.xsrf.whitelist') && - get(settings, 'server.xsrf.whitelist').length > 0 - ) { + if ((settings.server?.xsrf?.whitelist ?? []).length > 0) { log( 'It is not recommended to disable xsrf protections for API endpoints via [server.xsrf.whitelist]. ' + 'It will be removed in 8.0 release. Instead, supply the "kbn-xsrf" header.' diff --git a/src/core/server/elasticsearch/legacy/errors.ts b/src/core/server/elasticsearch/legacy/errors.ts index f81903d76547a..3b3b8da51a907 100644 --- a/src/core/server/elasticsearch/legacy/errors.ts +++ b/src/core/server/elasticsearch/legacy/errors.ts @@ -81,7 +81,7 @@ export class LegacyElasticsearchErrorHelpers { public static decorateNotAuthorizedError(error: Error, reason?: string) { const decoratedError = decorate(error, ErrorCode.NOT_AUTHORIZED, 401, reason); - const wwwAuthHeader = get(error, 'body.error.header[WWW-Authenticate]'); + const wwwAuthHeader = get(error, 'body.error.header[WWW-Authenticate]') as string; decoratedError.output.headers['WWW-Authenticate'] = wwwAuthHeader || 'Basic realm="Authorization Required"'; diff --git a/src/core/server/http/base_path_proxy_server.ts b/src/core/server/http/base_path_proxy_server.ts index ffbdabadd03f7..eccc9d013176c 100644 --- a/src/core/server/http/base_path_proxy_server.ts +++ b/src/core/server/http/base_path_proxy_server.ts @@ -24,7 +24,7 @@ import apm from 'elastic-apm-node'; import { ByteSizeValue } from '@kbn/config-schema'; import { Server, Request, ResponseToolkit } from 'hapi'; import HapiProxy from 'h2o2'; -import { sample } from 'lodash'; +import { sampleSize } from 'lodash'; import BrowserslistUserAgent from 'browserslist-useragent'; import * as Rx from 'rxjs'; import { take } from 'rxjs/operators'; @@ -90,7 +90,7 @@ export class BasePathProxyServer { httpConfig.maxPayload = new ByteSizeValue(ONE_GIGABYTE); if (!httpConfig.basePath) { - httpConfig.basePath = `/${sample(alphabet, 3).join('')}`; + httpConfig.basePath = `/${sampleSize(alphabet, 3).join('')}`; } } diff --git a/src/core/server/legacy/config/__snapshots__/legacy_object_to_config_adapter.test.ts.snap b/src/core/server/legacy/config/__snapshots__/legacy_object_to_config_adapter.test.ts.snap index 3b16bed92df97..4a6d86a0dfba6 100644 --- a/src/core/server/legacy/config/__snapshots__/legacy_object_to_config_adapter.test.ts.snap +++ b/src/core/server/legacy/config/__snapshots__/legacy_object_to_config_adapter.test.ts.snap @@ -119,7 +119,10 @@ Object { exports[`#set correctly sets values for paths that do not exist. 1`] = ` Object { - "unknown": "value", + "unknown": Object { + "sub1": "sub-value-1", + "sub2": "sub-value-2", + }, } `; diff --git a/src/core/server/saved_objects/mappings/lib/get_property.ts b/src/core/server/saved_objects/mappings/lib/get_property.ts index a31c9fe0c3ba1..91b2b1239fc55 100644 --- a/src/core/server/saved_objects/mappings/lib/get_property.ts +++ b/src/core/server/saved_objects/mappings/lib/get_property.ts @@ -17,7 +17,7 @@ * under the License. */ -import toPath from 'lodash/internal/toPath'; +import { toPath } from 'lodash'; import { SavedObjectsCoreFieldMapping, SavedObjectsFieldMapping, IndexMapping } from '../types'; function getPropertyMappingFromObjectMapping( diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.ts b/src/core/server/saved_objects/migrations/core/document_migrator.ts index 376f823267ebe..07675bb0a6819 100644 --- a/src/core/server/saved_objects/migrations/core/document_migrator.ts +++ b/src/core/server/saved_objects/migrations/core/document_migrator.ts @@ -62,7 +62,6 @@ import Boom from 'boom'; import _ from 'lodash'; -import cloneDeep from 'lodash.clonedeep'; import Semver from 'semver'; import { Logger } from '../../../logging'; import { SavedObjectUnsanitizedDoc } from '../../serialization'; @@ -151,7 +150,7 @@ export class DocumentMigrator implements VersionedTransformer { // Clone the document to prevent accidental mutations on the original data // Ex: Importing sample data that is cached at import level, migrations would // execute on mutated data the second time. - const clonedDoc = cloneDeep(doc); + const clonedDoc = _.cloneDeep(doc); return this.transformDoc(clonedDoc); }; } @@ -220,7 +219,7 @@ function buildActiveMigrations( return { ...migrations, [type.name]: { - latestVersion: _.last(transforms).version, + latestVersion: _.last(transforms)!.version, transforms, }, }; diff --git a/src/core/server/saved_objects/migrations/core/migration_coordinator.test.ts b/src/core/server/saved_objects/migrations/core/migration_coordinator.test.ts index 3f2c31a7c0e5c..2d27ca7c8a29b 100644 --- a/src/core/server/saved_objects/migrations/core/migration_coordinator.test.ts +++ b/src/core/server/saved_objects/migrations/core/migration_coordinator.test.ts @@ -17,7 +17,6 @@ * under the License. */ -import _ from 'lodash'; import { coordinateMigration } from './migration_coordinator'; import { createSavedObjectsMigrationLoggerMock } from '../mocks'; diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/src/core/server/saved_objects/service/lib/repository.ts index f24195c0f295e..880b71e164b5b 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/src/core/server/saved_objects/service/lib/repository.ts @@ -1346,7 +1346,7 @@ export class SavedObjectsRepository { // method transparently to the specified namespace. private _rawToSavedObject(raw: SavedObjectsRawDoc): SavedObject { const savedObject = this._serializer.rawToSavedObject(raw); - return omit(savedObject, 'namespace'); + return omit(savedObject, 'namespace') as SavedObject; } /** diff --git a/src/core/utils/deep_freeze.test.ts b/src/core/utils/deep_freeze.test.ts index 58aa9c9b8c92b..48f890160d05d 100644 --- a/src/core/utils/deep_freeze.test.ts +++ b/src/core/utils/deep_freeze.test.ts @@ -32,7 +32,8 @@ it('returns the first argument with all original references', () => { it('prevents adding properties to argument', () => { const frozen = deepFreeze({}); expect(() => { - // @ts-expect-error ts knows this shouldn't be possible, but just making sure + // ts knows this shouldn't be possible, but just making sure + // @ts-expect-error frozen.foo = true; }).toThrowError(`object is not extensible`); }); @@ -40,7 +41,8 @@ it('prevents adding properties to argument', () => { it('prevents changing properties on argument', () => { const frozen = deepFreeze({ foo: false }); expect(() => { - // @ts-expect-error ts knows this shouldn't be possible, but just making sure + // ts knows this shouldn't be possible, but just making sure + // @ts-expect-error frozen.foo = true; }).toThrowError(`read only property 'foo'`); }); @@ -48,7 +50,8 @@ it('prevents changing properties on argument', () => { it('prevents changing properties on nested children of argument', () => { const frozen = deepFreeze({ foo: { bar: { baz: { box: 1 } } } }); expect(() => { - // @ts-expect-error ts knows this shouldn't be possible, but just making sure + // ts knows this shouldn't be possible, but just making sure + // @ts-expect-error frozen.foo.bar.baz.box = 2; }).toThrowError(`read only property 'box'`); }); @@ -56,7 +59,8 @@ it('prevents changing properties on nested children of argument', () => { it('prevents adding items to a frozen array', () => { const frozen = deepFreeze({ foo: [1] }); expect(() => { - // @ts-expect-error ts knows this shouldn't be possible, but just making sure + // ts knows this shouldn't be possible, but just making sure + // @ts-expect-error frozen.foo.push(2); }).toThrowError(`object is not extensible`); }); @@ -64,7 +68,8 @@ it('prevents adding items to a frozen array', () => { it('prevents reassigning items in a frozen array', () => { const frozen = deepFreeze({ foo: [1] }); expect(() => { - // @ts-expect-error ts knows this shouldn't be possible, but just making sure + // ts knows this shouldn't be possible, but just making sure + // @ts-expect-error frozen.foo[0] = 2; }).toThrowError(`read only property '0'`); }); diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index bc3a6265cc582..cec80dd547a53 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -98,7 +98,6 @@ export const IGNORE_DIRECTORY_GLOBS = [ 'packages/*', 'packages/kbn-ui-framework/generator-kui', 'src/legacy/ui/public/flot-charts', - 'src/legacy/ui/public/utils/lodash-mixins', 'test/functional/fixtures/es_archiver/visualize_source-filters', 'packages/kbn-pm/src/utils/__fixtures__/*', 'x-pack/dev-tools', diff --git a/src/dev/sass/build_sass.js b/src/dev/sass/build_sass.js index 7075bcf55adf5..68058043477d0 100644 --- a/src/dev/sass/build_sass.js +++ b/src/dev/sass/build_sass.js @@ -23,11 +23,11 @@ import * as Rx from 'rxjs'; import { toArray } from 'rxjs/operators'; import { createFailError } from '@kbn/dev-utils'; +import { debounce } from 'lodash'; import { findPluginSpecs } from '../../legacy/plugin_discovery'; import { collectUiExports } from '../../legacy/ui'; import { buildAll } from '../../legacy/server/sass/build_all'; import chokidar from 'chokidar'; -import debounce from 'lodash/function/debounce'; // TODO: clintandrewhall - Extract and use FSWatcher from legacy/server/sass const build = async ({ log, kibanaDir, styleSheetPaths, watch }) => { diff --git a/src/fixtures/agg_resp/geohash_grid.js b/src/fixtures/agg_resp/geohash_grid.js index 0e576a88ab36a..fde1e54b0661d 100644 --- a/src/fixtures/agg_resp/geohash_grid.js +++ b/src/fixtures/agg_resp/geohash_grid.js @@ -44,7 +44,7 @@ export default function GeoHashGridAggResponseFixture() { // random number of tags let docCount = 0; const buckets = _.times(_.random(40, 200), function () { - return _.sample(geoHashCharts, 3).join(''); + return _.sampleSize(geoHashCharts, 3).join(''); }) .sort() .map(function (geoHash) { diff --git a/src/legacy/core_plugins/console_legacy/index.ts b/src/legacy/core_plugins/console_legacy/index.ts index c588b941112d1..82e00a99c6cfd 100644 --- a/src/legacy/core_plugins/console_legacy/index.ts +++ b/src/legacy/core_plugins/console_legacy/index.ts @@ -41,7 +41,7 @@ export default function (kibana: any) { uiExports: { injectDefaultVars: () => ({ elasticsearchUrl: url.format( - Object.assign(url.parse(head(_legacyEsConfig.hosts)), { auth: false }) + Object.assign(url.parse(head(_legacyEsConfig.hosts) as any), { auth: false }) ), }), }, diff --git a/src/legacy/core_plugins/elasticsearch/server/lib/handle_es_error.js b/src/legacy/core_plugins/elasticsearch/server/lib/handle_es_error.js index fc4ff512e2bd5..d76b2a2aa9364 100644 --- a/src/legacy/core_plugins/elasticsearch/server/lib/handle_es_error.js +++ b/src/legacy/core_plugins/elasticsearch/server/lib/handle_es_error.js @@ -35,7 +35,7 @@ export function handleESError(error) { return Boom.serverUnavailable(error); } else if ( error instanceof esErrors.Conflict || - _.contains(error.message, 'index_template_already_exists') + _.includes(error.message, 'index_template_already_exists') ) { return Boom.conflict(error); } else if (error instanceof esErrors[403]) { diff --git a/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/lib/dispatch.js b/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/lib/dispatch.js index 4f8cee2651a9f..20281d8479ab4 100644 --- a/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/lib/dispatch.js +++ b/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/lib/dispatch.js @@ -51,7 +51,7 @@ describe('Vislib Dispatch Class Test Suite', function () { }); it('implements on, off, emit methods', function () { - const events = _.pluck(vis.handler.charts, 'events'); + const events = _.map(vis.handler.charts, 'events'); expect(events.length).to.be.above(0); events.forEach(function (dispatch) { expect(dispatch).to.have.property('on'); diff --git a/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/visualizations/column_chart.js b/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/visualizations/column_chart.js index f075dff466793..6b7ccaed25d49 100644 --- a/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/visualizations/column_chart.js +++ b/src/legacy/core_plugins/kibana/public/__tests__/vis_type_vislib/visualizations/column_chart.js @@ -267,7 +267,7 @@ describe('stackData method - data set with zeros in percentage mode', function ( expect(chart.chartData.series).to.have.length(1); const series = chart.chartData.series[0].values; // with the interval set in seriesMonthlyInterval data, the point at x=1454309600000 does not exist - const point = _.find(series, 'x', 1454309600000); + const point = _.find(series, ['x', 1454309600000]); expect(point).to.not.be(undefined); expect(point.y).to.be(0); }); @@ -279,7 +279,7 @@ describe('stackData method - data set with zeros in percentage mode', function ( const chart = vis.handler.charts[0]; expect(chart.chartData.series).to.have.length(5); const series = chart.chartData.series[0].values; - const point = _.find(series, 'x', 1415826240000); + const point = _.find(series, ['x', 1415826240000]); expect(point).to.not.be(undefined); expect(point.y).to.be(0); }); diff --git a/src/legacy/core_plugins/timelion/public/app.js b/src/legacy/core_plugins/timelion/public/app.js index b5501982cec09..602b221b7d14d 100644 --- a/src/legacy/core_plugins/timelion/public/app.js +++ b/src/legacy/core_plugins/timelion/public/app.js @@ -427,7 +427,7 @@ app.controller('timelion', function ( const httpResult = $http .post('../api/timelion/run', { sheet: $scope.state.sheet, - time: _.extend( + time: _.assignIn( { from: timeRangeBounds.min, to: timeRangeBounds.max, diff --git a/src/legacy/core_plugins/timelion/public/directives/saved_object_finder.js b/src/legacy/core_plugins/timelion/public/directives/saved_object_finder.js index 879fab206b99d..ae042310fd464 100644 --- a/src/legacy/core_plugins/timelion/public/directives/saved_object_finder.js +++ b/src/legacy/core_plugins/timelion/public/directives/saved_object_finder.js @@ -165,7 +165,7 @@ module }; self.getLabel = function () { - return _.words(self.properties.nouns).map(_.capitalize).join(' '); + return _.words(self.properties.nouns).map(_.upperFirst).join(' '); }; //key handler for the filter text box diff --git a/src/legacy/core_plugins/timelion/public/directives/timelion_expression_input.js b/src/legacy/core_plugins/timelion/public/directives/timelion_expression_input.js index f3fd2fde8f2c5..2102b02194bc8 100644 --- a/src/legacy/core_plugins/timelion/public/directives/timelion_expression_input.js +++ b/src/legacy/core_plugins/timelion/public/directives/timelion_expression_input.js @@ -78,7 +78,7 @@ export function TimelionExpInput($http, $timeout) { function init() { $http.get('../api/timelion/functions').then(function (resp) { Object.assign(functionReference, { - byName: _.indexBy(resp.data, 'name'), + byName: _.keyBy(resp.data, 'name'), list: resp.data, }); }); diff --git a/src/legacy/core_plugins/timelion/public/directives/timelion_interval/timelion_interval.js b/src/legacy/core_plugins/timelion/public/directives/timelion_interval/timelion_interval.js index 577ee984e05c6..3750e15c000e7 100644 --- a/src/legacy/core_plugins/timelion/public/directives/timelion_interval/timelion_interval.js +++ b/src/legacy/core_plugins/timelion/public/directives/timelion_interval/timelion_interval.js @@ -47,7 +47,7 @@ export function TimelionInterval($timeout) { // Only run this on initialization if (newVal !== oldVal || oldVal == null) return; - if (_.contains($scope.intervalOptions, newVal)) { + if (_.includes($scope.intervalOptions, newVal)) { $scope.interval = newVal; } else { $scope.interval = 'other'; diff --git a/src/legacy/core_plugins/timelion/public/panels/timechart/schema.ts b/src/legacy/core_plugins/timelion/public/panels/timechart/schema.ts index b1999eb4b483c..087e166925327 100644 --- a/src/legacy/core_plugins/timelion/public/panels/timechart/schema.ts +++ b/src/legacy/core_plugins/timelion/public/panels/timechart/schema.ts @@ -346,7 +346,7 @@ export function timechartFn(dependencies: TimelionVisualizationDependencies) { } if (serie._global) { - _.merge(options, serie._global, function (objVal, srcVal) { + _.mergeWith(options, serie._global, function (objVal, srcVal) { // This is kind of gross, it means that you can't replace a global value with a null // best you can do is an empty string. Deal with it. if (objVal == null) return srcVal; diff --git a/src/legacy/plugin_discovery/plugin_spec/plugin_spec.js b/src/legacy/plugin_discovery/plugin_spec/plugin_spec.js index 17da5ffca1242..db1ec425f2ce5 100644 --- a/src/legacy/plugin_discovery/plugin_spec/plugin_spec.js +++ b/src/legacy/plugin_discovery/plugin_spec/plugin_spec.js @@ -19,8 +19,7 @@ import { resolve, basename, isAbsolute as isAbsolutePath } from 'path'; -import toPath from 'lodash/internal/toPath'; -import { get } from 'lodash'; +import { get, toPath } from 'lodash'; import { createInvalidPluginError } from '../errors'; import { isVersionCompatible } from './is_version_compatible'; diff --git a/src/legacy/server/i18n/localization/file_integrity.ts b/src/legacy/server/i18n/localization/file_integrity.ts index a852fba4a1c5a..7400d84ea2ce7 100644 --- a/src/legacy/server/i18n/localization/file_integrity.ts +++ b/src/legacy/server/i18n/localization/file_integrity.ts @@ -33,7 +33,7 @@ export interface Integrities { export async function getIntegrityHashes(filepaths: string[]): Promise { const hashes = await Promise.all(filepaths.map(getIntegrityHash)); - return zipObject(filepaths, hashes); + return zipObject(filepaths, hashes) as Integrities; } export async function getIntegrityHash(filepath: string): Promise { diff --git a/src/legacy/server/logging/log_format.js b/src/legacy/server/logging/log_format.js index 9bc1d67dd5857..8a80cbef1a9c5 100644 --- a/src/legacy/server/logging/log_format.js +++ b/src/legacy/server/logging/log_format.js @@ -144,7 +144,7 @@ export default class TransformObjStream extends Stream.Transform { data.message = message || 'Unknown error (no message)'; } else if (event.error instanceof Error) { data.type = 'error'; - data.level = _.contains(event.tags, 'fatal') ? 'fatal' : 'error'; + data.level = _.includes(event.tags, 'fatal') ? 'fatal' : 'error'; data.error = serializeError(event.error); const message = get(event, 'error.message'); data.message = message || 'Unknown error object (no message)'; diff --git a/src/legacy/server/status/server_status.js b/src/legacy/server/status/server_status.js index 3ee4d37d0b823..81d07de55faaf 100644 --- a/src/legacy/server/status/server_status.js +++ b/src/legacy/server/status/server_status.js @@ -81,7 +81,7 @@ export default class ServerStatus { // reduce to the state with the highest severity, defaulting to green .reduce((a, b) => (a.severity > b.severity ? a : b), states.get('green')); - const statuses = _.where(this._created, { state: state.id }); + const statuses = _.filter(this._created, { state: state.id }); const since = _.get(_.sortBy(statuses, 'since'), [0, 'since']); return { diff --git a/src/legacy/server/status/states.js b/src/legacy/server/status/states.js index bf05f45ff856c..4a34684571c3c 100644 --- a/src/legacy/server/status/states.js +++ b/src/legacy/server/status/states.js @@ -73,7 +73,7 @@ export const getAll = () => [ }, ]; -export const getAllById = () => _.indexBy(exports.getAll(), 'id'); +export const getAllById = () => _.keyBy(exports.getAll(), 'id'); export const defaults = { icon: 'question', diff --git a/src/legacy/ui/public/events.js b/src/legacy/ui/public/events.js index 1dc8a71afb193..464c03d98b83f 100644 --- a/src/legacy/ui/public/events.js +++ b/src/legacy/ui/public/events.js @@ -107,7 +107,7 @@ export function EventsProvider(Promise) { */ Events.prototype.emit = function (name) { const self = this; - const args = _.rest(arguments); + const args = _.tail(arguments); if (!self._listeners[name]) { return self._emitChain; @@ -131,7 +131,7 @@ export function EventsProvider(Promise) { * @return {array[function]} */ Events.prototype.listeners = function (name) { - return _.pluck(this._listeners[name], 'handler'); + return _.map(this._listeners[name], 'handler'); }; return Events; diff --git a/src/legacy/ui/public/indexed_array/__tests__/indexed_array.js b/src/legacy/ui/public/indexed_array/__tests__/indexed_array.js index a8abbba9df433..df96a58a6e99f 100644 --- a/src/legacy/ui/public/indexed_array/__tests__/indexed_array.js +++ b/src/legacy/ui/public/indexed_array/__tests__/indexed_array.js @@ -30,8 +30,8 @@ const users = [ ]; // this is how we used to accomplish this, before IndexedArray -users.byName = _.indexBy(users, 'name'); -users.byUsername = _.indexBy(users, 'username'); +users.byName = _.keyBy(users, 'name'); +users.byUsername = _.keyBy(users, 'username'); users.byGroup = _.groupBy(users, 'group'); users.inIdOrder = _.sortBy(users, 'id'); @@ -54,7 +54,7 @@ describe('IndexedArray', function () { }); it('clones to an object', function () { - expect(_.isPlainObject(_.clone(reg))).to.be(true); + expect(_.isObject(_.clone(reg))).to.be(true); expect(Array.isArray(_.clone(reg))).to.be(false); }); }); @@ -140,7 +140,7 @@ describe('IndexedArray', function () { reg.remove({ name: 'John' }); - expect(_.eq(reg.raw, reg.slice(0))).to.be(true); + expect(_.isEqual(reg.raw, reg.slice(0))).to.be(true); expect(reg.length).to.be(3); expect(reg[0].name).to.be('Anon'); }); diff --git a/src/legacy/ui/public/indexed_array/indexed_array.js b/src/legacy/ui/public/indexed_array/indexed_array.js index 79ef5e8c183da..b9a427b8da7ad 100644 --- a/src/legacy/ui/public/indexed_array/indexed_array.js +++ b/src/legacy/ui/public/indexed_array/indexed_array.js @@ -52,7 +52,7 @@ export class IndexedArray { this._indexNames = _.union( this._setupIndex(config.group, inflectIndex, organizeByIndexedArray(config)), - this._setupIndex(config.index, inflectIndex, _.indexBy), + this._setupIndex(config.index, inflectIndex, _.keyBy), this._setupIndex(config.order, inflectOrder, (raw, pluckValue) => { return [...raw].sort((itemA, itemB) => { const a = pluckValue(itemA); diff --git a/src/legacy/ui/public/routes/__tests__/_route_manager.js b/src/legacy/ui/public/routes/__tests__/_route_manager.js index 51bde8b8605ac..eb47a3e9ace70 100644 --- a/src/legacy/ui/public/routes/__tests__/_route_manager.js +++ b/src/legacy/ui/public/routes/__tests__/_route_manager.js @@ -46,7 +46,7 @@ describe('routes/route_manager', function () { }) ); - it('should have chainable methods: ' + _.pluck(chainableMethods, 'name').join(', '), function () { + it('should have chainable methods: ' + _.map(chainableMethods, 'name').join(', '), function () { chainableMethods.forEach(function (meth) { expect(routes[meth.name].apply(routes, _.clone(meth.args))).to.be(routes); }); diff --git a/src/legacy/ui/public/state_management/state.js b/src/legacy/ui/public/state_management/state.js index 93428e9f8fa4e..d91834adb4a79 100644 --- a/src/legacy/ui/public/state_management/state.js +++ b/src/legacy/ui/public/state_management/state.js @@ -341,7 +341,7 @@ export function StateProvider( * @return {object} */ State.prototype.toObject = function () { - return _.omit(this, (value, key) => { + return _.omitBy(this, (value, key) => { return key.charAt(0) === '$' || key.charAt(0) === '_' || _.isFunction(value); }); }; diff --git a/src/legacy/ui/public/utils/collection.ts b/src/legacy/ui/public/utils/collection.ts index 45e5a0704c37b..b882a2bbe6e5b 100644 --- a/src/legacy/ui/public/utils/collection.ts +++ b/src/legacy/ui/public/utils/collection.ts @@ -50,7 +50,7 @@ export function move( } below = !!below; - qualifier = qualifier && _.callback(qualifier); + qualifier = qualifier && _.iteratee(qualifier); const above = !below; const finder = below ? _.findIndex : _.findLastIndex; diff --git a/src/legacy/utils/deep_clone_with_buffers.ts b/src/legacy/utils/deep_clone_with_buffers.ts index 2e9120eb32b7c..2c58d85187985 100644 --- a/src/legacy/utils/deep_clone_with_buffers.ts +++ b/src/legacy/utils/deep_clone_with_buffers.ts @@ -17,7 +17,7 @@ * under the License. */ -import { cloneDeep } from 'lodash'; +import { cloneDeepWith } from 'lodash'; // We should add `any` return type to overcome bug in lodash types, customizer // in lodash 3.* can return `undefined` if cloning is handled by the lodash, but @@ -29,5 +29,5 @@ function cloneBuffersCustomizer(val: unknown): any { } export function deepCloneWithBuffers(val: T): T { - return cloneDeep(val, cloneBuffersCustomizer); + return cloneDeepWith(val, cloneBuffersCustomizer); } diff --git a/src/legacy/utils/unset.js b/src/legacy/utils/unset.js index 8b4cc0a7be1cd..db6f0e5ea9ef1 100644 --- a/src/legacy/utils/unset.js +++ b/src/legacy/utils/unset.js @@ -18,11 +18,10 @@ */ import _ from 'lodash'; -import toPath from 'lodash/internal/toPath'; export function unset(object, rawPath) { if (!object) return; - const path = toPath(rawPath); + const path = _.toPath(rawPath); switch (path.length) { case 0: diff --git a/src/plugins/charts/public/services/colors/mapped_colors.test.ts b/src/plugins/charts/public/services/colors/mapped_colors.test.ts index 2c9f37afc14c5..e97ca8ac257b4 100644 --- a/src/plugins/charts/public/services/colors/mapped_colors.test.ts +++ b/src/plugins/charts/public/services/colors/mapped_colors.test.ts @@ -61,7 +61,7 @@ describe('Mapped Colors', () => { mappedColors.mapKeys(arr); const colorValues = _(mappedColors.mapping).values(); - expect(colorValues.contains(seedColors[0])).toBe(false); + expect(colorValues.includes(seedColors[0])).toBe(false); expect(colorValues.uniq().size()).toBe(arr.length); }); diff --git a/src/plugins/charts/public/services/colors/mapped_colors.ts b/src/plugins/charts/public/services/colors/mapped_colors.ts index fe0deac734e6b..3b9e1501d638d 100644 --- a/src/plugins/charts/public/services/colors/mapped_colors.ts +++ b/src/plugins/charts/public/services/colors/mapped_colors.ts @@ -54,7 +54,7 @@ export class MappedColors { } get(key: string | number) { - return this.getConfigColorMapping()[key] || this._mapping[key]; + return this.getConfigColorMapping()[key as any] || this._mapping[key]; } flush() { @@ -75,10 +75,10 @@ export class MappedColors { const keysToMap: Array = []; _.each(keys, (key) => { // If this key is mapped in the config, it's unnecessary to have it mapped here - if (configMapping[key]) delete this._mapping[key]; + if (configMapping[key as any]) delete this._mapping[key]; // If this key is mapped to a color used by the config color mapping, we need to remap it - if (_.contains(configColors, this._mapping[key])) keysToMap.push(key); + if (_.includes(configColors, this._mapping[key])) keysToMap.push(key); // if key exist in oldMap, move it to mapping if (this._oldMap[key]) this._mapping[key] = this._oldMap[key]; @@ -93,7 +93,7 @@ export class MappedColors { let newColors = _.difference(colorPalette, allColors); while (keysToMap.length > newColors.length) { - newColors = newColors.concat(_.sample(allColors, keysToMap.length - newColors.length)); + newColors = newColors.concat(_.sampleSize(allColors, keysToMap.length - newColors.length)); } _.merge(this._mapping, _.zipObject(keysToMap, newColors)); diff --git a/src/plugins/console/public/application/components/settings_modal.tsx b/src/plugins/console/public/application/components/settings_modal.tsx index 377e739a0c59a..ebcc2a35b6111 100644 --- a/src/plugins/console/public/application/components/settings_modal.tsx +++ b/src/plugins/console/public/application/components/settings_modal.tsx @@ -17,6 +17,7 @@ * under the License. */ +import _ from 'lodash'; import React, { Fragment, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/src/plugins/console/public/application/models/sense_editor/__tests__/integration.test.js b/src/plugins/console/public/application/models/sense_editor/__tests__/integration.test.js index b7cc8f2f4b72f..06823a981af46 100644 --- a/src/plugins/console/public/application/models/sense_editor/__tests__/integration.test.js +++ b/src/plugins/console/public/application/models/sense_editor/__tests__/integration.test.js @@ -117,7 +117,7 @@ describe('Integration', () => { return t; }); if (terms.length !== expectedTerms.length) { - expect(_.pluck(terms, 'name')).toEqual(_.pluck(expectedTerms, 'name')); + expect(_.map(terms, 'name')).toEqual(_.map(expectedTerms, 'name')); } else { const filteredActualTerms = _.map(terms, function (actualTerm, i) { const expectedTerm = expectedTerms[i]; diff --git a/src/plugins/console/public/lib/autocomplete/body_completer.js b/src/plugins/console/public/lib/autocomplete/body_completer.js index f37b3ac0cca9c..d31507626146e 100644 --- a/src/plugins/console/public/lib/autocomplete/body_completer.js +++ b/src/plugins/console/public/lib/autocomplete/body_completer.js @@ -51,7 +51,7 @@ function resolvePathToComponents(tokenPath, context, editor, components) { context, editor ); - const result = [].concat.apply([], _.pluck(walkStates, 'components')); + const result = [].concat.apply([], _.map(walkStates, 'components')); return result; } diff --git a/src/plugins/console/public/lib/autocomplete/components/list_component.js b/src/plugins/console/public/lib/autocomplete/components/list_component.js index b770638a61ff7..b26a223433333 100644 --- a/src/plugins/console/public/lib/autocomplete/components/list_component.js +++ b/src/plugins/console/public/lib/autocomplete/components/list_component.js @@ -62,7 +62,7 @@ export class ListComponent extends SharedComponent { // verify we have all tokens const list = this.listGenerator(); - const notFound = _.any(tokens, function (token) { + const notFound = _.some(tokens, function (token) { return list.indexOf(token) === -1; }); diff --git a/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js b/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js index 79a332624e5e1..412fda16d45b6 100644 --- a/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js +++ b/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js @@ -61,73 +61,64 @@ export class UrlPatternMatcher { } const endpointComponents = endpoint.url_components || {}; const partList = pattern.split('/'); - _.each( - partList, - function (part, partIndex) { - if (part.search(/^{.+}$/) >= 0) { - part = part.substr(1, part.length - 2); - if (activeComponent.getComponent(part)) { - // we already have something for this, reuse - activeComponent = activeComponent.getComponent(part); - return; - } - // a new path, resolve. + _.each(partList, (part, partIndex) => { + if (part.search(/^{.+}$/) >= 0) { + part = part.substr(1, part.length - 2); + if (activeComponent.getComponent(part)) { + // we already have something for this, reuse + activeComponent = activeComponent.getComponent(part); + return; + } + // a new path, resolve. - if ((c = endpointComponents[part])) { - // endpoint specific. Support list - if (Array.isArray(c)) { - c = new ListComponent(part, c, activeComponent); - } else if (_.isObject(c) && c.type === 'list') { - c = new ListComponent( - part, - c.list, - activeComponent, - c.multiValued, - c.allow_non_valid - ); - } else { - console.warn( - 'incorrectly configured url component ', - part, - ' in endpoint', - endpoint - ); - c = new SharedComponent(part); - } - } else if ((c = this[method].parametrizedComponentFactories.getComponent(part))) { - // c is a f - c = c(part, activeComponent); + if ((c = endpointComponents[part])) { + // endpoint specific. Support list + if (Array.isArray(c)) { + c = new ListComponent(part, c, activeComponent); + } else if (_.isObject(c) && c.type === 'list') { + c = new ListComponent( + part, + c.list, + activeComponent, + c.multiValued, + c.allow_non_valid + ); } else { - // just accept whatever with not suggestions - c = new SimpleParamComponent(part, activeComponent); + console.warn('incorrectly configured url component ', part, ' in endpoint', endpoint); + c = new SharedComponent(part); } - - activeComponent = c; + } else if ((c = this[method].parametrizedComponentFactories.getComponent(part))) { + // c is a f + c = c(part, activeComponent); } else { - // not pattern - let lookAhead = part; - let s; + // just accept whatever with not suggestions + c = new SimpleParamComponent(part, activeComponent); + } - for (partIndex++; partIndex < partList.length; partIndex++) { - s = partList[partIndex]; - if (s.indexOf('{') >= 0) { - break; - } - lookAhead += '/' + s; - } + activeComponent = c; + } else { + // not pattern + let lookAhead = part; + let s; - if (activeComponent.getComponent(part)) { - // we already have something for this, reuse - activeComponent = activeComponent.getComponent(part); - activeComponent.addOption(lookAhead); - } else { - c = new ConstantComponent(part, activeComponent, lookAhead); - activeComponent = c; + for (partIndex++; partIndex < partList.length; partIndex++) { + s = partList[partIndex]; + if (s.indexOf('{') >= 0) { + break; } + lookAhead += '/' + s; } - }, - this - ); + + if (activeComponent.getComponent(part)) { + // we already have something for this, reuse + activeComponent = activeComponent.getComponent(part); + activeComponent.addOption(lookAhead); + } else { + c = new ConstantComponent(part, activeComponent, lookAhead); + activeComponent = c; + } + } + }); // mark end of endpoint path new AcceptEndpointComponent(endpoint, activeComponent); }); diff --git a/src/plugins/console/public/lib/autocomplete/engine.js b/src/plugins/console/public/lib/autocomplete/engine.js index 38be0d8a7e4c9..b893218f4967c 100644 --- a/src/plugins/console/public/lib/autocomplete/engine.js +++ b/src/plugins/console/public/lib/autocomplete/engine.js @@ -26,16 +26,12 @@ export function wrapComponentWithDefaults(component, defaults) { if (!result) { return result; } - result = _.map( - result, - function (term) { - if (!_.isObject(term)) { - term = { name: term }; - } - return _.defaults(term, defaults); - }, - this - ); + result = _.map(result, (term) => { + if (!_.isObject(term)) { + term = { name: term }; + } + return _.defaults(term, defaults); + }); return result; }; return component; @@ -145,7 +141,7 @@ export function populateContext(tokenPath, context, editor, includeAutoComplete, }); }); }); - autoCompleteSet = _.uniq(autoCompleteSet, false); + autoCompleteSet = _.uniq(autoCompleteSet); context.autoCompleteSet = autoCompleteSet; } diff --git a/src/plugins/console/public/lib/autocomplete/url_params.js b/src/plugins/console/public/lib/autocomplete/url_params.js index a237fe5dd59d6..037f4b1b27c50 100644 --- a/src/plugins/console/public/lib/autocomplete/url_params.js +++ b/src/plugins/console/public/lib/autocomplete/url_params.js @@ -50,18 +50,14 @@ export class UrlParams { } description = _.clone(description || {}); _.defaults(description, defaults); - _.each( - description, - function (pDescription, param) { - const component = new ParamComponent(param, this.rootComponent, pDescription); - if (Array.isArray(pDescription)) { - new ListComponent(param, pDescription, component); - } else if (pDescription === '__flag__') { - new ListComponent(param, ['true', 'false'], component); - } - }, - this - ); + _.each(description, (pDescription, param) => { + const component = new ParamComponent(param, this.rootComponent, pDescription); + if (Array.isArray(pDescription)) { + new ListComponent(param, pDescription, component); + } else if (pDescription === '__flag__') { + new ListComponent(param, ['true', 'false'], component); + } + }); } getTopLevelComponents() { return this.rootComponent.next; diff --git a/src/plugins/console/public/lib/kb/api.js b/src/plugins/console/public/lib/kb/api.js index aafb234b0f446..0e3b6a345836b 100644 --- a/src/plugins/console/public/lib/kb/api.js +++ b/src/plugins/console/public/lib/kb/api.js @@ -60,19 +60,15 @@ function Api(urlParametrizedComponentFactories, bodyParametrizedComponentFactori cls.addEndpointDescription = function (endpoint, description) { const copiedDescription = {}; - _.extend(copiedDescription, description || {}); + _.assign(copiedDescription, description || {}); _.defaults(copiedDescription, { id: endpoint, patterns: [endpoint], methods: ['GET'], }); - _.each( - copiedDescription.patterns, - function (p) { - this.urlPatternMatcher.addEndpoint(p, copiedDescription); - }, - this - ); + _.each(copiedDescription.patterns, (p) => { + this.urlPatternMatcher.addEndpoint(p, copiedDescription); + }); copiedDescription.paramsAutocomplete = new UrlParams(copiedDescription.url_params); copiedDescription.bodyAutocompleteRootComponents = compileBodyDescription( diff --git a/src/plugins/console/public/lib/mappings/mappings.js b/src/plugins/console/public/lib/mappings/mappings.js index 22aae8da030d4..88fe195bcbf2b 100644 --- a/src/plugins/console/public/lib/mappings/mappings.js +++ b/src/plugins/console/public/lib/mappings/mappings.js @@ -98,7 +98,7 @@ export function getFields(indices, types) { ret = [].concat.apply([], ret); } - return _.uniq(ret, function (f) { + return _.uniqBy(ret, function (f) { return f.name + ':' + f.type; }); } @@ -191,7 +191,7 @@ function getFieldNamesFromProperties(properties = {}) { }); // deduping - return _.uniq(fieldList, function (f) { + return _.uniqBy(fieldList, function (f) { return f.name + ':' + f.type; }); } diff --git a/src/plugins/console/server/lib/elasticsearch_proxy_config.ts b/src/plugins/console/server/lib/elasticsearch_proxy_config.ts index 28a971794d403..38592e66bd8be 100644 --- a/src/plugins/console/server/lib/elasticsearch_proxy_config.ts +++ b/src/plugins/console/server/lib/elasticsearch_proxy_config.ts @@ -25,7 +25,7 @@ import url from 'url'; import { ESConfigForProxy } from '../types'; const createAgent = (legacyConfig: ESConfigForProxy) => { - const target = url.parse(_.head(legacyConfig.hosts)); + const target = url.parse(_.head(legacyConfig.hosts) as any); if (!/^https/.test(target.protocol || '')) return new http.Agent(); const agentOptions: https.AgentOptions = {}; diff --git a/src/plugins/console/server/routes/api/console/proxy/create_handler.ts b/src/plugins/console/server/routes/api/console/proxy/create_handler.ts index 272f63322ffaa..a16fb1dadfbcf 100644 --- a/src/plugins/console/server/routes/api/console/proxy/create_handler.ts +++ b/src/plugins/console/server/routes/api/console/proxy/create_handler.ts @@ -19,7 +19,7 @@ import { Agent, IncomingMessage } from 'http'; import * as url from 'url'; -import { pick, trimLeft, trimRight } from 'lodash'; +import { pick, trimStart, trimEnd } from 'lodash'; import { KibanaRequest, Logger, RequestHandler } from 'kibana/server'; @@ -46,7 +46,7 @@ export interface CreateHandlerDependencies { } function toURL(base: string, path: string) { - const urlResult = new url.URL(`${trimRight(base, '/')}/${trimLeft(path, '/')}`); + const urlResult = new url.URL(`${trimEnd(base, '/')}/${trimStart(path, '/')}`); // Appending pretty here to have Elasticsearch do the JSON formatting, as doing // in JS can lead to data loss (7.0 will get munged into 7, thus losing indication of // measurement precision) diff --git a/src/plugins/console/server/services/spec_definitions_service.ts b/src/plugins/console/server/services/spec_definitions_service.ts index ccd3b6b1c0a82..ce990e62a2284 100644 --- a/src/plugins/console/server/services/spec_definitions_service.ts +++ b/src/plugins/console/server/services/spec_definitions_service.ts @@ -55,11 +55,11 @@ export class SpecDefinitionsService { }); if (urlParamsDef) { - description.url_params = _.extend(description.url_params || {}, copiedDescription.url_params); + description.url_params = _.assign(description.url_params || {}, copiedDescription.url_params); _.defaults(description.url_params, urlParamsDef); } - _.extend(copiedDescription, description); + _.assign(copiedDescription, description); _.defaults(copiedDescription, { id: endpoint, patterns: [endpoint], diff --git a/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx b/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx index 96210358c05e4..26af13b4410fe 100644 --- a/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx +++ b/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx @@ -20,6 +20,7 @@ import { i18n } from '@kbn/i18n'; import { CoreStart } from 'src/core/public'; import uuid from 'uuid'; +import _ from 'lodash'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; import { ViewMode, PanelState, IEmbeddable } from '../../embeddable_plugin'; import { SavedObject } from '../../../../saved_objects/public'; diff --git a/src/plugins/dashboard/public/application/actions/replace_panel_flyout.tsx b/src/plugins/dashboard/public/application/actions/replace_panel_flyout.tsx index 57fe4acf08145..e4a98ffac7a55 100644 --- a/src/plugins/dashboard/public/application/actions/replace_panel_flyout.tsx +++ b/src/plugins/dashboard/public/application/actions/replace_panel_flyout.tsx @@ -19,6 +19,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; +import _ from 'lodash'; import { EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, EuiTitle } from '@elastic/eui'; import { NotificationsStart, Toast } from 'src/core/public'; import { DashboardPanelState } from '../embeddable'; diff --git a/src/plugins/dashboard/public/application/dashboard_app_controller.tsx b/src/plugins/dashboard/public/application/dashboard_app_controller.tsx index 58477d28f9081..a321bc7959c5c 100644 --- a/src/plugins/dashboard/public/application/dashboard_app_controller.tsx +++ b/src/plugins/dashboard/public/application/dashboard_app_controller.tsx @@ -17,7 +17,7 @@ * under the License. */ -import _, { uniq } from 'lodash'; +import _, { uniqBy } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EUI_MODAL_CANCEL_BUTTON, EuiCheckboxGroup } from '@elastic/eui'; import { EuiCheckboxGroupIdToSelectedMap } from '@elastic/eui/src/components/form/checkbox/checkbox_group'; @@ -265,7 +265,7 @@ export class DashboardAppController { if (!embeddableIndexPatterns) return; panelIndexPatterns.push(...embeddableIndexPatterns); }); - panelIndexPatterns = uniq(panelIndexPatterns, 'id'); + panelIndexPatterns = uniqBy(panelIndexPatterns, 'id'); if (panelIndexPatterns && panelIndexPatterns.length > 0) { $scope.$evalAsync(() => { @@ -520,7 +520,7 @@ export class DashboardAppController { differences.filters = appStateDashboardInput.filters; } - Object.keys(_.omit(containerInput, 'filters')).forEach((key) => { + Object.keys(_.omit(containerInput, ['filters'])).forEach((key) => { const containerValue = (containerInput as { [key: string]: unknown })[key]; const appStateValue = ((appStateDashboardInput as unknown) as { [key: string]: unknown })[ key diff --git a/src/plugins/dashboard/public/application/embeddable/panel/create_panel_state.ts b/src/plugins/dashboard/public/application/embeddable/panel/create_panel_state.ts index 79116a57869d3..a6928c0608bd2 100644 --- a/src/plugins/dashboard/public/application/embeddable/panel/create_panel_state.ts +++ b/src/plugins/dashboard/public/application/embeddable/panel/create_panel_state.ts @@ -17,7 +17,6 @@ * under the License. */ -import _ from 'lodash'; import { PanelState, EmbeddableInput } from '../../../embeddable_plugin'; import { DEFAULT_PANEL_HEIGHT, DEFAULT_PANEL_WIDTH } from '../dashboard_constants'; import { DashboardPanelState } from '../types'; diff --git a/src/plugins/dashboard/public/application/embeddable/panel/dashboard_panel_placement.ts b/src/plugins/dashboard/public/application/embeddable/panel/dashboard_panel_placement.ts index 1b060c186db97..5ecd57d670ae8 100644 --- a/src/plugins/dashboard/public/application/embeddable/panel/dashboard_panel_placement.ts +++ b/src/plugins/dashboard/public/application/embeddable/panel/dashboard_panel_placement.ts @@ -17,6 +17,7 @@ * under the License. */ +import _ from 'lodash'; import { PanelNotFoundError } from '../../../embeddable_plugin'; import { GridData } from '../../../../common'; import { DashboardPanelState, DASHBOARD_GRID_COLUMN_COUNT } from '..'; diff --git a/src/plugins/dashboard/public/application/lib/update_saved_dashboard.ts b/src/plugins/dashboard/public/application/lib/update_saved_dashboard.ts index e3b6725ce7449..72d3ffe6b2322 100644 --- a/src/plugins/dashboard/public/application/lib/update_saved_dashboard.ts +++ b/src/plugins/dashboard/public/application/lib/update_saved_dashboard.ts @@ -47,7 +47,7 @@ export function updateSavedDashboard( 'pause', 'section', 'value', - ]); + ]) as RefreshInterval; savedDashboard.refreshInterval = savedDashboard.timeRestore ? timeRestoreObj : undefined; // save only unpinned filters diff --git a/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts b/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts index 4f7945d6dd601..1e8356a1ef100 100644 --- a/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts +++ b/src/plugins/dashboard/server/saved_objects/dashboard_migrations.ts @@ -111,7 +111,7 @@ export const dashboardSavedObjectTypeMigrations = { * in that version. So we apply this twice, once with 6.7.2 and once with 7.0.1 while the backport to 6.7 * only contained the 6.7.2 migration and not the 7.0.1 migration. */ - '6.7.2': flow>(migrateMatchAllQuery), - '7.0.0': flow>(migrations700), - '7.3.0': flow>(migrations730), + '6.7.2': flow(migrateMatchAllQuery), + '7.0.0': flow(migrations700), + '7.3.0': flow(migrations730), }; diff --git a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts index 75e169b79f320..452d68aa92394 100644 --- a/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts +++ b/src/plugins/dashboard/server/saved_objects/migrate_match_all_query.ts @@ -22,7 +22,7 @@ import { get } from 'lodash'; import { DEFAULT_QUERY_LANGUAGE } from '../../../data/common'; export const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { - const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); + const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); if (searchSourceJSON) { let searchSource: any; diff --git a/src/plugins/data/common/es_query/es_query/migrate_filter.test.ts b/src/plugins/data/common/es_query/es_query/migrate_filter.test.ts index ae9d1c7921955..261977b859659 100644 --- a/src/plugins/data/common/es_query/es_query/migrate_filter.test.ts +++ b/src/plugins/data/common/es_query/es_query/migrate_filter.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { isEqual, clone } from 'lodash'; +import { isEqual, cloneDeep } from 'lodash'; import { migrateFilter, DeprecatedMatchPhraseFilter } from './migrate_filter'; import { PhraseFilter, MatchAllFilter } from '../filters'; @@ -52,7 +52,7 @@ describe('migrateFilter', function () { }); it('should not modify the original filter', function () { - const oldMatchPhraseFilterCopy = clone(oldMatchPhraseFilter, true); + const oldMatchPhraseFilterCopy = cloneDeep(oldMatchPhraseFilter); migrateFilter(oldMatchPhraseFilter, undefined); diff --git a/src/plugins/data/common/es_query/filters/index.ts b/src/plugins/data/common/es_query/filters/index.ts index 990d588359442..4441155ad9218 100644 --- a/src/plugins/data/common/es_query/filters/index.ts +++ b/src/plugins/data/common/es_query/filters/index.ts @@ -44,6 +44,6 @@ export * from './types'; * @param {object} filter The filter to clean * @returns {object} */ -export const cleanFilter = (filter: Filter): Filter => omit(filter, ['meta', '$state']); +export const cleanFilter = (filter: Filter): Filter => omit(filter, ['meta', '$state']) as Filter; export const isFilterDisabled = (filter: Filter): boolean => get(filter, 'meta.disabled', false); diff --git a/src/plugins/data/common/es_query/filters/range_filter.ts b/src/plugins/data/common/es_query/filters/range_filter.ts index c318a0f0c2c3d..c355a7397797c 100644 --- a/src/plugins/data/common/es_query/filters/range_filter.ts +++ b/src/plugins/data/common/es_query/filters/range_filter.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { map, reduce, mapValues, get, keys, pick } from 'lodash'; +import { map, reduce, mapValues, get, keys, pickBy } from 'lodash'; import { Filter, FilterMeta } from './meta_filter'; import { IIndexPattern, IFieldType } from '../../index_patterns'; @@ -112,7 +112,7 @@ export const buildRangeFilter = ( filter.meta.formattedValue = formattedValue; } - params = mapValues(params, (value) => (field.type === 'number' ? parseFloat(value) : value)); + params = mapValues(params, (value: any) => (field.type === 'number' ? parseFloat(value) : value)); if ('gte' in params && 'gt' in params) throw new Error('gte and gt are mutually exclusive'); if ('lte' in params && 'lt' in params) throw new Error('lte and lt are mutually exclusive'); @@ -148,7 +148,7 @@ export const buildRangeFilter = ( }; export const getRangeScript = (field: IFieldType, params: RangeFilterParams) => { - const knownParams = pick(params, (val, key: any) => key in operators); + const knownParams = pickBy(params, (val, key: any) => key in operators); let script = map( knownParams, (val: any, key: string) => '(' + field.script + ')' + get(operators, key) + key diff --git a/src/plugins/data/common/es_query/kuery/functions/is.ts b/src/plugins/data/common/es_query/kuery/functions/is.ts index 89aec6e55e81b..404f27b38992c 100644 --- a/src/plugins/data/common/es_query/kuery/functions/is.ts +++ b/src/plugins/data/common/es_query/kuery/functions/is.ts @@ -97,7 +97,7 @@ export function toElasticsearchQuery( }); } - const isExistsQuery = valueArg.type === 'wildcard' && value === '*'; + const isExistsQuery = valueArg.type === 'wildcard' && (value as any) === '*'; const isAllFieldsQuery = (fullFieldNameArg.type === 'wildcard' && ((fieldName as unknown) as string) === '*') || (fields && indexPattern && fields.length === indexPattern.fields.length); @@ -135,7 +135,7 @@ export function toElasticsearchQuery( ...accumulator, { script: { - ...getPhraseScript(field, value), + ...getPhraseScript(field, value as any), }, }, ]; diff --git a/src/plugins/data/common/field_formats/converters/truncate.ts b/src/plugins/data/common/field_formats/converters/truncate.ts index a6c4a1133a2ed..c9ab9df920e16 100644 --- a/src/plugins/data/common/field_formats/converters/truncate.ts +++ b/src/plugins/data/common/field_formats/converters/truncate.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { trunc } from 'lodash'; +import { truncate } from 'lodash'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; @@ -35,7 +35,7 @@ export class TruncateFormat extends FieldFormat { textConvert: TextContextTypeConvert = (val) => { const length = this.param('fieldLength'); if (length > 0) { - return trunc(val, { + return truncate(val, { length: length + omission.length, omission, }); diff --git a/src/plugins/data/common/field_formats/field_format.test.ts b/src/plugins/data/common/field_formats/field_format.test.ts index 2229601994496..2b8f9ad48a34b 100644 --- a/src/plugins/data/common/field_formats/field_format.test.ts +++ b/src/plugins/data/common/field_formats/field_format.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { constant, trimRight, trimLeft, get } from 'lodash'; +import { constant, trimEnd, trimStart, get } from 'lodash'; import { FieldFormat } from './field_format'; import { asPrettyString } from './utils'; @@ -120,8 +120,8 @@ describe('FieldFormat class', () => { test('does escape the output of the text converter if used in an html context', () => { const f = getTestFormat(undefined, constant('')); - const expected = trimRight( - trimLeft(f.convert('', 'html'), ''), + const expected = trimEnd( + trimStart(f.convert('', 'html'), ''), '' ); diff --git a/src/plugins/data/common/field_formats/field_format.ts b/src/plugins/data/common/field_formats/field_format.ts index 26f07a12067ce..9e4308d6fd559 100644 --- a/src/plugins/data/common/field_formats/field_format.ts +++ b/src/plugins/data/common/field_formats/field_format.ts @@ -185,7 +185,7 @@ export abstract class FieldFormat { const params = transform( this._params, - (uniqParams, val, param) => { + (uniqParams: any, val, param) => { if (param && val !== get(defaultsParams, param)) { uniqParams[param] = val; } diff --git a/src/plugins/data/common/field_formats/field_formats_registry.ts b/src/plugins/data/common/field_formats/field_formats_registry.ts index 9325485bce75d..74a942b51583d 100644 --- a/src/plugins/data/common/field_formats/field_formats_registry.ts +++ b/src/plugins/data/common/field_formats/field_formats_registry.ts @@ -233,7 +233,7 @@ export class FieldFormatsRegistry { parseDefaultTypeMap(value: any) { this.defaultMap = value; forOwn(this, (fn) => { - if (isFunction(fn) && fn.cache) { + if (isFunction(fn) && (fn as any).cache) { // clear all memoize caches // @ts-ignore fn.cache = new memoize.Cache(); diff --git a/src/plugins/data/common/field_mapping/mapping_setup.ts b/src/plugins/data/common/field_mapping/mapping_setup.ts index 99b49b401a8b8..0bad47d9889f0 100644 --- a/src/plugins/data/common/field_mapping/mapping_setup.ts +++ b/src/plugins/data/common/field_mapping/mapping_setup.ts @@ -28,7 +28,7 @@ type ShorthandFieldMapObject = FieldMappingSpec | ES_FIELD_TYPES | 'json'; /** @public */ export const expandShorthand = (sh: Record): MappingObject => { - return mapValues>(sh, (val: ShorthandFieldMapObject) => { + return mapValues(sh, (val: ShorthandFieldMapObject) => { const fieldMap = isString(val) ? { type: val } : val; const json: FieldMappingSpec = { type: ES_FIELD_TYPES.TEXT, diff --git a/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts index 26f1a185ada3a..1702441aa4ca1 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/ensure_default_index_pattern.ts @@ -17,7 +17,7 @@ * under the License. */ -import { contains } from 'lodash'; +import { includes } from 'lodash'; import { IndexPatternsContract } from './index_patterns'; import { UiSettingsCommon } from '../types'; @@ -35,7 +35,7 @@ export const createEnsureDefaultIndexPattern = ( const patterns = await this.getIds(); let defaultId = await uiSettings.get('defaultIndex'); let defined = !!defaultId; - const exists = contains(patterns, defaultId); + const exists = includes(patterns, defaultId); if (defined && !exists) { await uiSettings.remove('defaultIndex'); diff --git a/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.ts b/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.ts index c194687b7c3bf..c1aa2efe46998 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/flatten_hit.ts @@ -77,7 +77,7 @@ function decorateFlattenedWrapper(hit: Record, metaFields: Record { const scriptedNames = mockLogStashFields() .filter((item: Field) => item.scripted === true) .map((item: Field) => item.name); - const respNames = pluck(indexPattern.getScriptedFields(), 'name'); + const respNames = map(indexPattern.getScriptedFields(), 'name'); expect(respNames).toEqual(scriptedNames); }); @@ -216,7 +216,7 @@ describe('IndexPattern', () => { const notScriptedNames = mockLogStashFields() .filter((item: Field) => item.scripted === false) .map((item: Field) => item.name); - const respNames = pluck(indexPattern.getNonScriptedFields(), 'name'); + const respNames = map(indexPattern.getNonScriptedFields(), 'name'); expect(respNames).toEqual(notScriptedNames); }); @@ -287,7 +287,7 @@ describe('IndexPattern', () => { // const saveSpy = sinon.spy(indexPattern, 'save'); const scriptedFields = indexPattern.getScriptedFields(); const oldCount = scriptedFields.length; - const scriptedField = last(scriptedFields); + const scriptedField = last(scriptedFields) as any; await indexPattern.removeScriptedField(scriptedField); @@ -298,7 +298,7 @@ describe('IndexPattern', () => { test('should not allow duplicate names', async () => { const scriptedFields = indexPattern.getScriptedFields(); - const scriptedField = last(scriptedFields); + const scriptedField = last(scriptedFields) as any; expect.assertions(1); try { await indexPattern.addScriptedField(scriptedField.name, "'new script'", 'string', 'lang'); diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts index bde550c660a32..dab11ad0ce29a 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts @@ -353,9 +353,9 @@ export class IndexPattern implements IIndexPattern { async addScriptedField(name: string, script: string, fieldType: string = 'string', lang: string) { const scriptedFields = this.getScriptedFields(); - const names = _.pluck(scriptedFields, 'name'); + const names = _.map(scriptedFields, 'name'); - if (_.contains(names, name)) { + if (_.includes(names, name)) { throw new DuplicateField(name); } @@ -417,11 +417,11 @@ export class IndexPattern implements IIndexPattern { } getNonScriptedFields() { - return _.where(this.fields, { scripted: false }); + return _.filter(this.fields, { scripted: false }); } getScriptedFields() { - return _.where(this.fields, { scripted: true }); + return _.filter(this.fields, { scripted: true }); } isTimeBased(): boolean { diff --git a/src/plugins/data/common/query/filter_manager/compare_filters.ts b/src/plugins/data/common/query/filter_manager/compare_filters.ts index 65df6e26a25b3..be8e9b13e7cff 100644 --- a/src/plugins/data/common/query/filter_manager/compare_filters.ts +++ b/src/plugins/data/common/query/filter_manager/compare_filters.ts @@ -44,7 +44,7 @@ const mapFilter = ( comparators: FilterCompareOptions, excludedAttributes: string[] ) => { - const cleaned: FilterMeta = omit(filter, excludedAttributes); + const cleaned: FilterMeta = omit(filter, excludedAttributes) as FilterMeta; if (comparators.index) cleaned.index = filter.meta?.index; if (comparators.negate) cleaned.negate = filter.meta && Boolean(filter.meta.negate); diff --git a/src/plugins/data/public/index_patterns/saved_objects_client_wrapper.ts b/src/plugins/data/public/index_patterns/saved_objects_client_wrapper.ts index 8f1d02c5ffd54..345dd3b32691e 100644 --- a/src/plugins/data/public/index_patterns/saved_objects_client_wrapper.ts +++ b/src/plugins/data/public/index_patterns/saved_objects_client_wrapper.ts @@ -27,12 +27,11 @@ import { type SOClient = Pick; -const simpleSavedObjectToSavedObject = ( - simpleSavedObject: SimpleSavedObject -): SavedObject => ({ - version: simpleSavedObject._version, - ...omit(simpleSavedObject, '_version'), -}); +const simpleSavedObjectToSavedObject = (simpleSavedObject: SimpleSavedObject): SavedObject => + ({ + version: simpleSavedObject._version, + ...omit(simpleSavedObject, '_version'), + } as any); export class SavedObjectsClientPublicToCommon implements SavedObjectsClientCommon { private savedObjectClient: SOClient; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index f19611bc1d526..670b40e7d9472 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -584,8 +584,8 @@ export abstract class FieldFormat { textConvert: TextContextTypeConvert | undefined; static title: string; toJSON(): { - id: unknown; - params: _.Dictionary | undefined; + id: any; + params: any; }; type: any; } diff --git a/src/plugins/data/public/query/filter_manager/filter_manager.ts b/src/plugins/data/public/query/filter_manager/filter_manager.ts index 60a49a4bd50f4..eaf6ddc9afc35 100644 --- a/src/plugins/data/public/query/filter_manager/filter_manager.ts +++ b/src/plugins/data/public/query/filter_manager/filter_manager.ts @@ -65,7 +65,7 @@ export class FilterManager { } // matching filter in globalState, update global and don't add from appState - _.assign(match.meta, filter.meta); + _.assignIn(match.meta, filter.meta); }); return FilterManager.mergeFilters(cleanedAppFilters, globalFilters); diff --git a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts index 432a763bfd48c..723001297e8f2 100644 --- a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts +++ b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts @@ -53,7 +53,7 @@ function getExistingFilter( if (isScriptedPhraseFilter(filter)) { return filter.meta.field === fieldName && filter.script!.script.params.value === value; } - }); + }) as any; } function updateExistingFilter(existingFilter: Filter, negate: boolean) { diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_range.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_range.ts index d2d5a4b069218..41457a01e0c97 100644 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_range.ts +++ b/src/plugins/data/public/query/filter_manager/lib/mappers/map_range.ts @@ -17,7 +17,7 @@ * under the License. */ -import { get, has } from 'lodash'; +import { get, hasIn } from 'lodash'; import { FilterValueFormatter, RangeFilter, @@ -48,10 +48,10 @@ function getParams(filter: RangeFilter) { ? get(filter, 'script.script.params') : getRangeByKey(filter, key); - let left = has(params, 'gte') ? params.gte : params.gt; + let left = hasIn(params, 'gte') ? params.gte : params.gt; if (left == null) left = -Infinity; - let right = has(params, 'lte') ? params.lte : params.lt; + let right = hasIn(params, 'lte') ? params.lte : params.lt; if (right == null) right = Infinity; const value = getFormattedValueFn(left, right); diff --git a/src/plugins/data/public/search/aggs/agg_config.ts b/src/plugins/data/public/search/aggs/agg_config.ts index 8650f5920e520..de49e9ab6f66e 100644 --- a/src/plugins/data/public/search/aggs/agg_config.ts +++ b/src/plugins/data/public/search/aggs/agg_config.ts @@ -271,7 +271,7 @@ export class AggConfig { const outParams = _.transform( this.getAggParams(), - (out, aggParam) => { + (out: any, aggParam) => { let val = params[aggParam.name]; // don't serialize undefined/null values @@ -365,7 +365,7 @@ export class AggConfig { } getAggParams() { - return [...(_.has(this, 'type.params') ? this.type.params : [])]; + return [...(_.hasIn(this, 'type.params') ? this.type.params : [])]; } getRequestAggs() { @@ -438,14 +438,10 @@ export class AggConfig { public set type(type) { if (this.__typeDecorations) { - _.forOwn( - this.__typeDecorations, - function (prop, name: string | undefined) { - // @ts-ignore - delete this[name]; - }, - this - ); + _.forOwn(this.__typeDecorations, (prop, name: string | undefined) => { + // @ts-ignore + delete this[name]; + }); } if (type && _.isFunction(type.decorateAggConfig)) { diff --git a/src/plugins/data/public/search/aggs/agg_configs.test.ts b/src/plugins/data/public/search/aggs/agg_configs.test.ts index 121bb29f6f8ed..f3efeb028665b 100644 --- a/src/plugins/data/public/search/aggs/agg_configs.test.ts +++ b/src/plugins/data/public/search/aggs/agg_configs.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; import { AggConfig } from './agg_config'; import { AggConfigs } from './agg_configs'; import { AggTypesRegistryStart } from './agg_types_registry'; @@ -166,7 +166,7 @@ describe('AggConfigs', () => { const ac = new AggConfigs(indexPattern, configStates, { typesRegistry }); const sorted = ac.getRequestAggs(); - const aggs = indexBy(ac.aggs, (agg) => agg.type.name); + const aggs = keyBy(ac.aggs, (agg) => agg.type.name); expect(sorted.shift()).toBe(aggs.terms); expect(sorted.shift()).toBe(aggs.histogram); @@ -189,7 +189,7 @@ describe('AggConfigs', () => { const ac = new AggConfigs(indexPattern, configStates, { typesRegistry }); const sorted = ac.getResponseAggs(); - const aggs = indexBy(ac.aggs, (agg) => agg.type.name); + const aggs = keyBy(ac.aggs, (agg) => agg.type.name); expect(sorted.shift()).toBe(aggs.terms); expect(sorted.shift()).toBe(aggs.date_histogram); @@ -206,7 +206,7 @@ describe('AggConfigs', () => { const ac = new AggConfigs(indexPattern, configStates, { typesRegistry }); const sorted = ac.getResponseAggs(); - const aggs = indexBy(ac.aggs, (agg) => agg.type.name); + const aggs = keyBy(ac.aggs, (agg) => agg.type.name); expect(sorted.shift()).toBe(aggs.terms); expect(sorted.shift()).toBe(aggs.date_histogram); diff --git a/src/plugins/data/public/search/aggs/buckets/filters.ts b/src/plugins/data/public/search/aggs/buckets/filters.ts index 4052c0b390155..cb17ef07a930b 100644 --- a/src/plugins/data/public/search/aggs/buckets/filters.ts +++ b/src/plugins/data/public/search/aggs/buckets/filters.ts @@ -90,7 +90,7 @@ export const getFiltersBucketAgg = ({ const outFilters = transform( inFilters, - function (filters, filter) { + function (filters: any, filter) { const input = cloneDeep(filter.input); if (!input) { diff --git a/src/plugins/data/public/search/aggs/buckets/ip_range.ts b/src/plugins/data/public/search/aggs/buckets/ip_range.ts index 018fcb365b585..ed9bc5e0462f1 100644 --- a/src/plugins/data/public/search/aggs/buckets/ip_range.ts +++ b/src/plugins/data/public/search/aggs/buckets/ip_range.ts @@ -17,7 +17,7 @@ * under the License. */ -import { noop, map, omit, isNull } from 'lodash'; +import { noop, map, omitBy, isNull } from 'lodash'; import { i18n } from '@kbn/i18n'; import { BucketAggType } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; @@ -101,7 +101,7 @@ export const getIpRangeBucketAgg = ({ getInternalStartServices }: IpRangeBucketA let ranges = aggConfig.params.ranges[ipRangeType]; if (ipRangeType === IP_RANGE_TYPES.FROM_TO) { - ranges = map(ranges, (range: any) => omit(range, isNull)); + ranges = map(ranges, (range: any) => omitBy(range, isNull)); } output.params.ranges = ranges; diff --git a/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.ts b/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.ts index 12197c85f4a96..017f646258c01 100644 --- a/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.ts +++ b/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.ts @@ -113,7 +113,7 @@ export class TimeBuckets { bounds = Array.isArray(input) ? input : []; } - const moments: Moment[] = sortBy(bounds, Number); + const moments: Moment[] = sortBy(bounds, Number) as Moment[]; const valid = moments.length === 2 && moments.every(isValidMoment); if (!valid) { diff --git a/src/plugins/data/public/search/aggs/buckets/migrate_include_exclude_format.ts b/src/plugins/data/public/search/aggs/buckets/migrate_include_exclude_format.ts index 47da7e59af5e0..8dc8b786fcfcd 100644 --- a/src/plugins/data/public/search/aggs/buckets/migrate_include_exclude_format.ts +++ b/src/plugins/data/public/search/aggs/buckets/migrate_include_exclude_format.ts @@ -52,7 +52,7 @@ export const migrateIncludeExcludeFormat = { output.params[this.name] = parsedValue; } } else if (isObject(value)) { - output.params[this.name] = value.pattern; + output.params[this.name] = (value as any).pattern; } else if (value && isStringType(aggConfig)) { output.params[this.name] = value; } diff --git a/src/plugins/data/public/search/aggs/metrics/lib/get_response_agg_config_class.ts b/src/plugins/data/public/search/aggs/metrics/lib/get_response_agg_config_class.ts index 00d866e6f2b3e..25d3a3ea90a4a 100644 --- a/src/plugins/data/public/search/aggs/metrics/lib/get_response_agg_config_class.ts +++ b/src/plugins/data/public/search/aggs/metrics/lib/get_response_agg_config_class.ts @@ -17,7 +17,7 @@ * under the License. */ -import { assign } from 'lodash'; +import { assignIn } from 'lodash'; import { IMetricAggConfig } from '../metric_agg_type'; /** @@ -69,7 +69,7 @@ export const create = (parentAgg: IMetricAggConfig, props: Partial + isObject(nsValue) ? {} : nsValue + ); } const esQueryConfigs = getEsQueryConfig(uiSettings); @@ -460,7 +473,7 @@ export class SearchSource { ]); let serializedSearchSourceFields: SearchSourceFields = { ...searchSourceFields, - index: searchSourceFields.index ? searchSourceFields.index.id : undefined, + index: (searchSourceFields.index ? searchSourceFields.index.id : undefined) as any, }; if (originalFilters) { const filters = this.getFilters(originalFilters); diff --git a/src/plugins/data/public/ui/search_bar/create_search_bar.tsx b/src/plugins/data/public/ui/search_bar/create_search_bar.tsx index a0df7604f23aa..f8b7e4f480911 100644 --- a/src/plugins/data/public/ui/search_bar/create_search_bar.tsx +++ b/src/plugins/data/public/ui/search_bar/create_search_bar.tsx @@ -17,6 +17,7 @@ * under the License. */ +import _ from 'lodash'; import React, { useState, useEffect, useRef } from 'react'; import { CoreStart } from 'src/core/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_capabilities.ts b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_capabilities.ts index 502364cdcba32..b4b86b73a5f4a 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_capabilities.ts +++ b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_capabilities.ts @@ -17,7 +17,7 @@ * under the License. */ -import { defaults, indexBy, sortBy } from 'lodash'; +import { defaults, keyBy, sortBy } from 'lodash'; import { LegacyAPICaller } from 'kibana/server'; import { callFieldCapsApi } from '../es_api'; @@ -44,7 +44,7 @@ export async function getFieldCapabilities( metaFields: string[] = [] ) { const esFieldCaps: FieldCapsResponse = await callFieldCapsApi(callCluster, indices); - const fieldsFromFieldCapsByName = indexBy(readFieldCapsResponse(esFieldCaps), 'name'); + const fieldsFromFieldCapsByName = keyBy(readFieldCapsResponse(esFieldCaps), 'name'); const allFieldsUnsorted = Object.keys(fieldsFromFieldCapsByName) .filter((name) => !name.startsWith('_')) diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/resolve_time_pattern.ts b/src/plugins/data/server/index_patterns/fetcher/lib/resolve_time_pattern.ts index a01d34dbe9df6..2e408d7569be5 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/resolve_time_pattern.ts +++ b/src/plugins/data/server/index_patterns/fetcher/lib/resolve_time_pattern.ts @@ -46,7 +46,7 @@ export async function resolveTimePattern(callCluster: LegacyAPICaller, timePatte [] ) .sortBy((indexName: string) => indexName) - .uniq(true) + .sortedUniq() .map((indexName) => { const parsed = moment(indexName, timePattern, true); if (!parsed.isValid()) { @@ -65,7 +65,7 @@ export async function resolveTimePattern(callCluster: LegacyAPICaller, timePatte isMatch: indexName === parsed.format(timePattern), }; }) - .sortByOrder(['valid', 'order'], ['desc', 'desc']) + .orderBy(['valid', 'order'], ['desc', 'desc']) .value(); return { diff --git a/src/plugins/data/server/saved_objects/index_pattern_migrations.ts b/src/plugins/data/server/saved_objects/index_pattern_migrations.ts index 37819a13b6518..768041a376ad1 100644 --- a/src/plugins/data/server/saved_objects/index_pattern_migrations.ts +++ b/src/plugins/data/server/saved_objects/index_pattern_migrations.ts @@ -55,6 +55,6 @@ const migrateSubTypeAndParentFieldProperties: SavedObjectMigrationFn = }; export const indexPatternSavedObjectTypeMigrations = { - '6.5.0': flow(migrateAttributeTypeAndAttributeTypeMeta), - '7.6.0': flow(migrateSubTypeAndParentFieldProperties), + '6.5.0': flow(migrateAttributeTypeAndAttributeTypeMeta), + '7.6.0': flow(migrateSubTypeAndParentFieldProperties), }; diff --git a/src/plugins/data/server/saved_objects/index_patterns.ts b/src/plugins/data/server/saved_objects/index_patterns.ts index 902cf2988f429..44d2813f6e3e8 100644 --- a/src/plugins/data/server/saved_objects/index_patterns.ts +++ b/src/plugins/data/server/saved_objects/index_patterns.ts @@ -54,5 +54,5 @@ export const indexPatternSavedObjectType: SavedObjectsType = { typeMeta: { type: 'keyword' }, }, }, - migrations: indexPatternSavedObjectTypeMigrations, + migrations: indexPatternSavedObjectTypeMigrations as any, }; diff --git a/src/plugins/data/server/saved_objects/search.ts b/src/plugins/data/server/saved_objects/search.ts index 437c83f67bf5d..16caaf05a0fc6 100644 --- a/src/plugins/data/server/saved_objects/search.ts +++ b/src/plugins/data/server/saved_objects/search.ts @@ -56,5 +56,5 @@ export const searchSavedObjectType: SavedObjectsType = { version: { type: 'integer' }, }, }, - migrations: searchSavedObjectTypeMigrations, + migrations: searchSavedObjectTypeMigrations as any, }; diff --git a/src/plugins/data/server/saved_objects/search_migrations.ts b/src/plugins/data/server/saved_objects/search_migrations.ts index 2e37cd1255cee..9bba429f8d71b 100644 --- a/src/plugins/data/server/saved_objects/search_migrations.ts +++ b/src/plugins/data/server/saved_objects/search_migrations.ts @@ -22,7 +22,7 @@ import { SavedObjectMigrationFn } from 'kibana/server'; import { DEFAULT_QUERY_LANGUAGE } from '../../common'; const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { - const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); + const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); if (searchSourceJSON) { let searchSource: any; @@ -122,7 +122,7 @@ const migrateSearchSortToNestedArray: SavedObjectMigrationFn = (doc) = }; export const searchSavedObjectTypeMigrations = { - '6.7.2': flow>(migrateMatchAllQuery), - '7.0.0': flow>(setNewReferences), - '7.4.0': flow>(migrateSearchSortToNestedArray), + '6.7.2': flow(migrateMatchAllQuery), + '7.0.0': flow(setNewReferences), + '7.4.0': flow(migrateSearchSortToNestedArray), }; diff --git a/src/plugins/discover/public/application/angular/context/query/actions.js b/src/plugins/discover/public/application/angular/context/query/actions.js index 0e057e0a715c4..32fc2873d7f2a 100644 --- a/src/plugins/discover/public/application/angular/context/query/actions.js +++ b/src/plugins/discover/public/application/angular/context/query/actions.js @@ -70,7 +70,7 @@ export function QueryActionsProvider(Promise) { setLoadingStatus(state)('anchor'); return Promise.try(() => - fetchAnchor(indexPatternId, anchorId, [_.zipObject([sort]), { [tieBreakerField]: sort[1] }]) + fetchAnchor(indexPatternId, anchorId, [_.fromPairs([sort]), { [tieBreakerField]: sort[1] }]) ).then( (anchorDocument) => { setLoadedStatus(state)('anchor'); diff --git a/src/plugins/discover/public/application/components/sidebar/lib/field_calculator.test.ts b/src/plugins/discover/public/application/components/sidebar/lib/field_calculator.test.ts index 875cbf4075aa2..87401818c4907 100644 --- a/src/plugins/discover/public/application/components/sidebar/lib/field_calculator.test.ts +++ b/src/plugins/discover/public/application/components/sidebar/lib/field_calculator.test.ts @@ -186,7 +186,7 @@ describe('fieldCalculator', function () { expect(extensions).toBeInstanceOf(Object); expect(extensions.buckets).toBeInstanceOf(Array); expect(extensions.buckets.length).toBe(3); - expect(_.pluck(extensions.buckets, 'value')).toEqual(['html', 'php', 'gif']); + expect(_.map(extensions.buckets, 'value')).toEqual(['html', 'php', 'gif']); expect(extensions.error).toBe(undefined); }); diff --git a/src/plugins/discover/public/kibana_services.ts b/src/plugins/discover/public/kibana_services.ts index 2c6bbcc3ecce1..ecb5d7fd90283 100644 --- a/src/plugins/discover/public/kibana_services.ts +++ b/src/plugins/discover/public/kibana_services.ts @@ -16,6 +16,8 @@ * specific language governing permissions and limitations * under the License. */ + +import _ from 'lodash'; import { createHashHistory } from 'history'; import { ScopedHistory } from 'kibana/public'; import { DiscoverServices } from './build_services'; diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.js b/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.js index 18e9ffcb27c56..cde2a253d7630 100644 --- a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.js +++ b/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.js @@ -19,7 +19,7 @@ import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; -import { padLeft } from 'lodash'; +import { padStart } from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; @@ -55,12 +55,12 @@ function makeSequence(min, max) { const MINUTE_OPTIONS = makeSequence(0, 59).map((value) => ({ value: value.toString(), - text: padLeft(value, 2, '0'), + text: padStart(value, 2, '0'), })); const HOUR_OPTIONS = makeSequence(0, 23).map((value) => ({ value: value.toString(), - text: padLeft(value, 2, '0'), + text: padStart(value, 2, '0'), })); const DAY_OPTIONS = makeSequence(1, 7).map((value) => ({ diff --git a/src/plugins/expressions/common/expression_functions/specs/kibana_context.ts b/src/plugins/expressions/common/expression_functions/specs/kibana_context.ts index b8be273d7bbd3..2b7d1b8ed9d76 100644 --- a/src/plugins/expressions/common/expression_functions/specs/kibana_context.ts +++ b/src/plugins/expressions/common/expression_functions/specs/kibana_context.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { uniq } from 'lodash'; +import { uniqBy } from 'lodash'; import { i18n } from '@kbn/i18n'; import { ExpressionFunctionDefinition } from '../../expression_functions'; import { KibanaContext } from '../../expression_types'; @@ -40,7 +40,7 @@ const getParsedValue = (data: any, defaultValue: any) => typeof data === 'string' && data.length ? JSON.parse(data) || defaultValue : defaultValue; const mergeQueries = (first: Query | Query[] = [], second: Query | Query[]) => - uniq( + uniqBy( [...(Array.isArray(first) ? first : [first]), ...(Array.isArray(second) ? second : [second])], (n: any) => JSON.stringify(n.query) ); diff --git a/src/plugins/expressions/common/expression_types/specs/datatable.ts b/src/plugins/expressions/common/expression_types/specs/datatable.ts index c113765f8e7e7..5cd53df663e1d 100644 --- a/src/plugins/expressions/common/expression_types/specs/datatable.ts +++ b/src/plugins/expressions/common/expression_types/specs/datatable.ts @@ -20,7 +20,7 @@ import { map, pick, zipObject } from 'lodash'; import { ExpressionTypeDefinition } from '../types'; -import { PointSeries } from './pointseries'; +import { PointSeries, PointSeriesColumn } from './pointseries'; import { ExpressionValueRender } from './render'; const name = 'datatable'; @@ -109,8 +109,8 @@ export const datatable: ExpressionTypeDefinition ({ type: name, rows: value.rows, - columns: map(value.columns, (val, colName) => { - return { name: colName!, type: val.type }; + columns: map(value.columns, (val: PointSeriesColumn, colName) => { + return { name: colName, type: val.type }; }), }), }, diff --git a/src/plugins/expressions/common/expression_types/specs/kibana_datatable.ts b/src/plugins/expressions/common/expression_types/specs/kibana_datatable.ts index 7f2f3c37c587c..e226f3b124eed 100644 --- a/src/plugins/expressions/common/expression_types/specs/kibana_datatable.ts +++ b/src/plugins/expressions/common/expression_types/specs/kibana_datatable.ts @@ -19,7 +19,7 @@ import { map } from 'lodash'; import { SerializedFieldFormat } from '../../types/common'; -import { Datatable, PointSeries } from '.'; +import { Datatable, PointSeries, PointSeriesColumn } from '.'; const name = 'kibana_datatable'; @@ -62,7 +62,7 @@ export const kibanaDatatable = { }; }, pointseries: (context: PointSeries) => { - const columns = map(context.columns, (column, n) => { + const columns = map(context.columns, (column: PointSeriesColumn, n) => { return { id: n, name: n, ...column }; }); return { diff --git a/src/plugins/expressions/public/loader.ts b/src/plugins/expressions/public/loader.ts index 9428d7db1d9d0..f957f10a9aeba 100644 --- a/src/plugins/expressions/public/loader.ts +++ b/src/plugins/expressions/public/loader.ts @@ -19,6 +19,7 @@ import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { filter, map } from 'rxjs/operators'; +import { defaults } from 'lodash'; import { Adapters } from '../../inspector/public'; import { IExpressionLoaderParams } from './types'; import { ExpressionAstExpression } from '../common'; @@ -168,7 +169,7 @@ export class ExpressionLoader { } if (params.searchContext) { - this.params.searchContext = _.defaults( + this.params.searchContext = defaults( {}, params.searchContext, this.params.searchContext || {} diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts b/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts index 52cd5b0c3f5bd..5ab9c695caaa0 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts @@ -17,7 +17,7 @@ * under the License. */ -import { Dictionary, countBy, defaults, unique } from 'lodash'; +import { Dictionary, countBy, defaults, uniq } from 'lodash'; import { i18n } from '@kbn/i18n'; import { IndexPattern, IndexPatternField } from '../../../../../../plugins/data/public'; import { IndexPatternManagementStart } from '../../../../../../plugins/index_pattern_management/public'; @@ -145,7 +145,7 @@ export function convertToEuiSelectOption(options: string[], type: string) { ] : []; return euiOptions.concat( - unique(options).map((option) => { + uniq(options).map((option) => { return { value: option, text: option, diff --git a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts index 4eff5112c0c07..03ed6c5520dec 100644 --- a/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts +++ b/src/plugins/input_control_vis/public/control/filter_manager/phrase_filter_manager.ts @@ -86,11 +86,11 @@ export class PhraseFilterManager extends FilterManager { private getValueFromFilter(kbnFilter: PhraseFilter): any { // bool filter - multiple phrase filters if (_.has(kbnFilter, 'query.bool.should')) { - return _.get(kbnFilter, 'query.bool.should') - .map((kbnQueryFilter) => { + return _.get(kbnFilter, 'query.bool.should') + .map((kbnQueryFilter: PhraseFilter) => { return this.getValueFromFilter(kbnQueryFilter); }) - .filter((value) => { + .filter((value: any) => { if (value) { return true; } diff --git a/src/plugins/inspector/common/adapters/request/request_adapter.ts b/src/plugins/inspector/common/adapters/request/request_adapter.ts index 70af6b5b51d18..af10d1b77b16d 100644 --- a/src/plugins/inspector/common/adapters/request/request_adapter.ts +++ b/src/plugins/inspector/common/adapters/request/request_adapter.ts @@ -18,7 +18,6 @@ */ import { EventEmitter } from 'events'; -import _ from 'lodash'; import uuid from 'uuid/v4'; import { RequestResponder } from './request_responder'; import { Request, RequestParams, RequestStatus } from './types'; diff --git a/src/plugins/inspector/public/views/data/lib/export_csv.ts b/src/plugins/inspector/public/views/data/lib/export_csv.ts index c0e0153c6053e..5a970cc6cff38 100644 --- a/src/plugins/inspector/public/views/data/lib/export_csv.ts +++ b/src/plugins/inspector/public/views/data/lib/export_csv.ts @@ -29,7 +29,7 @@ const allDoubleQuoteRE = /"/g; function escape(val: string, quoteValues: boolean) { if (isObject(val)) { - val = val.valueOf(); + val = (val as any).valueOf(); } val = String(val); diff --git a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx b/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx index 87fdf0730c880..2fa1debf51b5c 100644 --- a/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx +++ b/src/plugins/kibana_react/public/table_list_view/table_list_view.tsx @@ -20,7 +20,7 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { debounce, indexBy, sortBy, uniq } from 'lodash'; +import { debounce, keyBy, sortBy, uniq } from 'lodash'; import { EuiTitle, EuiInMemoryTable, @@ -178,7 +178,7 @@ class TableListView extends React.Component itemsById[id])); } catch (error) { this.props.toastNotifications.addDanger({ diff --git a/src/plugins/kibana_utils/common/url/encode_uri_query.ts b/src/plugins/kibana_utils/common/url/encode_uri_query.ts index fb60f0ceff10f..fe8cf12d0d6f2 100644 --- a/src/plugins/kibana_utils/common/url/encode_uri_query.ts +++ b/src/plugins/kibana_utils/common/url/encode_uri_query.ts @@ -45,7 +45,7 @@ export const encodeQuery = ( query: ParsedQuery, encodeFunction: (val: string, pctEncodeSpaces?: boolean) => string = encodeUriQuery ) => - transform(query, (result, value, key) => { + transform(query, (result: any, value, key) => { if (key) { const singleValue = Array.isArray(value) ? value.join(',') : value; diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx index 3a05ce59f5d13..1c5642f9b75b7 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu_item.tsx @@ -17,7 +17,7 @@ * under the License. */ -import { capitalize, isFunction } from 'lodash'; +import { upperFirst, isFunction } from 'lodash'; import React, { MouseEvent } from 'react'; import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; @@ -50,11 +50,11 @@ export function TopNavMenuItem(props: TopNavMenuData) { const btn = props.emphasize ? ( - {capitalize(props.label || props.id!)} + {upperFirst(props.label || props.id!)} ) : ( - {capitalize(props.label || props.id!)} + {upperFirst(props.label || props.id!)} ); diff --git a/src/plugins/saved_objects_management/public/lib/create_field_list.ts b/src/plugins/saved_objects_management/public/lib/create_field_list.ts index 5f424751dd58e..dcfb44d8a5224 100644 --- a/src/plugins/saved_objects_management/public/lib/create_field_list.ts +++ b/src/plugins/saved_objects_management/public/lib/create_field_list.ts @@ -17,7 +17,7 @@ * under the License. */ -import { forOwn, indexBy, isNumber, isBoolean, isPlainObject, isString } from 'lodash'; +import { forOwn, keyBy, isNumber, isBoolean, isPlainObject, isString } from 'lodash'; import { SimpleSavedObject } from '../../../../core/public'; import { castEsToKbnFieldTypeName } from '../../../data/public'; import { ObjectField } from '../management_section/types'; @@ -93,9 +93,9 @@ const addFieldsFromClass = function ( Class: { mapping: Record; searchSource: any }, fields: ObjectField[] ) { - const fieldMap = indexBy(fields, 'name'); + const fieldMap = keyBy(fields, 'name'); - _.forOwn(Class.mapping, (esType, name) => { + forOwn(Class.mapping, (esType, name) => { if (!name || fieldMap[name]) { return; } diff --git a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx index 75692777f08bb..dbbea4012aba9 100644 --- a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx +++ b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx @@ -78,7 +78,7 @@ const SavedObjectsTablePage = ({ }} canGoInApp={(savedObject) => { const { inAppUrl } = savedObject.meta; - return inAppUrl ? get(capabilities, inAppUrl.uiCapabilitiesPath) : false; + return inAppUrl ? Boolean(get(capabilities, inAppUrl.uiCapabilitiesPath)) : false; }} /> ); diff --git a/src/plugins/vis_default_editor/public/components/agg_params_helper.ts b/src/plugins/vis_default_editor/public/components/agg_params_helper.ts index 39abddb3de853..ef2f937c8547c 100644 --- a/src/plugins/vis_default_editor/public/components/agg_params_helper.ts +++ b/src/plugins/vis_default_editor/public/components/agg_params_helper.ts @@ -87,7 +87,7 @@ function getAggParamsToRender({ // should be refactored in the future to provide a more general way // for visualization to override some agg config settings if (agg.type.name === 'top_hits' && param.name === 'field') { - const allowStrings = _.get(schema, `aggSettings[${agg.type.name}].allowStrings`, false); + const allowStrings = get(schema, `aggSettings[${agg.type.name}].allowStrings`, false); if (!allowStrings) { availableFields = availableFields.filter((field) => field.type === 'number'); } diff --git a/src/plugins/vis_default_editor/public/components/controls/components/input_list.tsx b/src/plugins/vis_default_editor/public/components/controls/components/input_list.tsx index a0bc0d78a2889..37e95f2419b45 100644 --- a/src/plugins/vis_default_editor/public/components/controls/components/input_list.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/components/input_list.tsx @@ -18,7 +18,7 @@ */ import React, { useState, useEffect, Fragment, useCallback } from 'react'; -import { isEmpty, isEqual, mapValues, omit, pick } from 'lodash'; +import { isEmpty, isEqual, mapValues, omitBy, pick } from 'lodash'; import { EuiButtonIcon, EuiFlexGroup, @@ -173,7 +173,7 @@ function InputList({ config, list, onChange, setValidity }: InputListProps) { const model: InputObject = mapValues(pick(models[index], modelNames), 'model'); // we need to skip empty values since they are not stored in saved object - return !isEqual(item, omit(model, isEmpty)); + return !isEqual(item, omitBy(model, isEmpty)); }) ) { setModels( diff --git a/src/plugins/vis_default_editor/public/components/controls/components/number_list/utils.ts b/src/plugins/vis_default_editor/public/components/controls/components/number_list/utils.ts index 6eaef3050029a..a3998cbd5954b 100644 --- a/src/plugins/vis_default_editor/public/components/controls/components/number_list/utils.ts +++ b/src/plugins/vis_default_editor/public/components/controls/components/number_list/utils.ts @@ -105,7 +105,7 @@ function validateValueUnique( } function getNextModel(list: NumberRowModel[], range: NumberListRange): NumberRowModel { - const lastValue = last(list).value; + const lastValue = (last(list) as NumberRowModel).value; let next = Number(lastValue) ? Number(lastValue) + 1 : 1; if (next >= range.max) { diff --git a/src/plugins/vis_default_editor/public/components/controls/filters.tsx b/src/plugins/vis_default_editor/public/components/controls/filters.tsx index 9a9933b5e1e83..04d0df27927fa 100644 --- a/src/plugins/vis_default_editor/public/components/controls/filters.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/filters.tsx @@ -43,7 +43,9 @@ function FiltersParamEditor({ agg, value = [], setValue }: AggParamEditorProps { // set parsed values into model after initialization - setValue(filters.map((filter) => omit({ ...filter, input: filter.input }, 'id'))); + setValue( + filters.map((filter) => omit({ ...filter, input: filter.input }, 'id') as FilterValue) + ); }); useEffect(() => { @@ -58,7 +60,7 @@ function FiltersParamEditor({ agg, value = [], setValue }: AggParamEditorProps { // do not set internal id parameter into saved object - setValue(updatedFilters.map((filter) => omit(filter, 'id'))); + setValue(updatedFilters.map((filter) => omit(filter, 'id') as FilterValue)); setFilters(updatedFilters); }; diff --git a/src/plugins/vis_default_editor/public/components/controls/number_interval.tsx b/src/plugins/vis_default_editor/public/components/controls/number_interval.tsx index 0d21eb04c12b2..f6354027ab01b 100644 --- a/src/plugins/vis_default_editor/public/components/controls/number_interval.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/number_interval.tsx @@ -56,7 +56,7 @@ function NumberIntervalParamEditor({ setValidity, setValue, }: AggParamEditorProps) { - const base: number = get(editorConfig, 'interval.base'); + const base: number = get(editorConfig, 'interval.base') as number; const min = base || 0; const isValid = value !== undefined && value >= min; diff --git a/src/plugins/vis_default_editor/public/components/controls/time_interval.tsx b/src/plugins/vis_default_editor/public/components/controls/time_interval.tsx index 4af41f67bc524..dd9e432fa512e 100644 --- a/src/plugins/vis_default_editor/public/components/controls/time_interval.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/time_interval.tsx @@ -107,7 +107,7 @@ function TimeIntervalParamEditor({ setTouched, setValidity, }: AggParamEditorProps) { - const timeBase: string = get(editorConfig, 'interval.timeBase'); + const timeBase: string = get(editorConfig, 'interval.timeBase') as string; const options = timeBase ? [] : ((aggParam as any).options || []).reduce( diff --git a/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx b/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx index 26567d05e0427..b2c7bcafa15a3 100644 --- a/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx +++ b/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx @@ -74,7 +74,8 @@ function DefaultEditorDataTab({ ), [metricAggs] ); - const lastParentPipelineAggTitle = lastParentPipelineAgg && lastParentPipelineAgg.type.title; + const lastParentPipelineAggTitle = + lastParentPipelineAgg && (lastParentPipelineAgg as IAggConfig).type.title; const addSchema: AddSchema = useCallback((schema) => dispatch(addNewAgg(schema)), [dispatch]); @@ -116,7 +117,7 @@ function DefaultEditorDataTab({ setValidity, setTouched, removeAgg: onAggRemove, - }; + } as any; return ( <> diff --git a/src/plugins/vis_default_editor/public/schemas.ts b/src/plugins/vis_default_editor/public/schemas.ts index 54520b85cb5ec..d95a6252331bf 100644 --- a/src/plugins/vis_default_editor/public/schemas.ts +++ b/src/plugins/vis_default_editor/public/schemas.ts @@ -58,6 +58,7 @@ export class Schemas implements ISchemas { > ) { _(schemas || []) + .chain() .map((schema) => { if (!schema.name) throw new Error('all schema must have a unique name'); diff --git a/src/plugins/vis_type_metric/public/components/metric_vis_component.tsx b/src/plugins/vis_type_metric/public/components/metric_vis_component.tsx index 5e8a463748188..4385826762612 100644 --- a/src/plugins/vis_type_metric/public/components/metric_vis_component.tsx +++ b/src/plugins/vis_type_metric/public/components/metric_vis_component.tsx @@ -28,6 +28,7 @@ import { getHeatmapColors } from '../../../charts/public'; import { VisParams, MetricVisMetric } from '../types'; import { getFormatService } from '../services'; import { SchemaConfig, ExprVis } from '../../../visualizations/public'; +import { Range } from '../../../expressions/public'; export interface MetricVisComponentProps { visParams: VisParams; @@ -41,7 +42,7 @@ export class MetricVisComponent extends Component { const config = this.props.visParams.metric; const isPercentageMode = config.percentageMode; const colorsRange = config.colorsRange; - const max = last(colorsRange).to; + const max = (last(colorsRange) as Range).to; const labels: string[] = []; colorsRange.forEach((range: any) => { @@ -111,7 +112,7 @@ export class MetricVisComponent extends Component { const dimensions = this.props.visParams.dimensions; const isPercentageMode = config.percentageMode; const min = config.colorsRange[0].from; - const max = last(config.colorsRange).to; + const max = (last(config.colorsRange) as Range).to; const colors = this.getColors(); const labels = this.getLabels(); const metrics: MetricVisMetric[] = []; diff --git a/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts b/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts index db29d9112be8e..860b4e9f2dbde 100644 --- a/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts +++ b/src/plugins/vis_type_timelion/public/helpers/panel_utils.ts @@ -17,7 +17,7 @@ * under the License. */ -import { cloneDeep, defaults, merge, compact } from 'lodash'; +import { cloneDeep, defaults, mergeWith, compact } from 'lodash'; import moment, { Moment } from 'moment-timezone'; import { TimefilterContract } from 'src/plugins/data/public'; @@ -91,7 +91,7 @@ function buildSeriesData(chart: Series[], options: jquery.flot.plotOptions) { } if (series._global) { - merge(options, series._global, (objVal, srcVal) => { + mergeWith(options, series._global, (objVal, srcVal) => { // This is kind of gross, it means that you can't replace a global value with a null // best you can do is an empty string. Deal with it. if (objVal == null) { diff --git a/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts b/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts index c02f43818af9c..7be18a4774d94 100644 --- a/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts +++ b/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts @@ -27,6 +27,7 @@ import { import { getTimelionRequestHandler } from './helpers/timelion_request_handler'; import { TIMELION_VIS_NAME } from './timelion_vis_type'; import { TimelionVisDependencies } from './plugin'; +import { Filter, Query, TimeRange } from '../../data/common'; type Input = KibanaContext | null; type Output = Promise>; @@ -71,9 +72,9 @@ export const getTimelionVisualizationConfig = ( const visParams = { expression: args.expression, interval: args.interval }; const response = await timelionRequestHandler({ - timeRange: get(input, 'timeRange'), - query: get(input, 'query'), - filters: get(input, 'filters'), + timeRange: get(input, 'timeRange') as TimeRange, + query: get(input, 'query') as Query, + filters: get(input, 'filters') as Filter[], visParams, forceFetch: true, }); diff --git a/src/plugins/vis_type_timelion/server/fit_functions/average.js b/src/plugins/vis_type_timelion/server/fit_functions/average.js index 06db7bd0e9324..09518a3286487 100644 --- a/src/plugins/vis_type_timelion/server/fit_functions/average.js +++ b/src/plugins/vis_type_timelion/server/fit_functions/average.js @@ -27,7 +27,7 @@ export default function average(dataTuples, targetTuples) { // Phase 1: Downsample // We necessarily won't well match the dataSource here as we don't know how much data // they had when creating their own average - const resultTimes = _.pluck(targetTuples, 0); + const resultTimes = _.map(targetTuples, 0); const dataTuplesQueue = _.clone(dataTuples); const resultValues = _.map(targetTuples, function (bucket) { const time = bucket[0]; diff --git a/src/plugins/vis_type_timelion/server/handlers/chain_runner.js b/src/plugins/vis_type_timelion/server/handlers/chain_runner.js index 59adea30730c7..2ee8deb4dd049 100644 --- a/src/plugins/vis_type_timelion/server/handlers/chain_runner.js +++ b/src/plugins/vis_type_timelion/server/handlers/chain_runner.js @@ -132,7 +132,7 @@ export default function chainRunner(tlConfig) { }); }); return Bluebird.all(seriesList).then(function (args) { - const list = _.chain(args).pluck('list').flatten().value(); + const list = _.chain(args).map('list').flatten().value(); const seriesList = _.merge.apply(this, _.flatten([{}, args])); seriesList.list = list; return seriesList; diff --git a/src/plugins/vis_type_timelion/server/handlers/lib/validate_arg.js b/src/plugins/vis_type_timelion/server/handlers/lib/validate_arg.js index 9b4fdddc2186e..11004d2784d3c 100644 --- a/src/plugins/vis_type_timelion/server/handlers/lib/validate_arg.js +++ b/src/plugins/vis_type_timelion/server/handlers/lib/validate_arg.js @@ -28,7 +28,7 @@ export default function validateArgFn(functionDef) { const multi = argDef.multi; const isCorrectType = (function () { // If argument is not allow to be specified multiple times, we're dealing with a plain value for type - if (!multi) return _.contains(required, type); + if (!multi) return _.includes(required, type); // If it is, we'll get an array for type return _.difference(type, required).length === 0; })(); diff --git a/src/plugins/vis_type_timelion/server/lib/as_sorted.js b/src/plugins/vis_type_timelion/server/lib/as_sorted.js index 536145a6b8dcd..6a2b7c0f5a9f5 100644 --- a/src/plugins/vis_type_timelion/server/lib/as_sorted.js +++ b/src/plugins/vis_type_timelion/server/lib/as_sorted.js @@ -22,5 +22,5 @@ import unzipPairs from './unzip_pairs.js'; export default function asSorted(timeValObject, fn) { const data = unzipPairs(timeValObject); - return _.zipObject(fn(data)); + return _.fromPairs(fn(data)); } diff --git a/src/plugins/vis_type_timelion/server/lib/classes/timelion_function.js b/src/plugins/vis_type_timelion/server/lib/classes/timelion_function.js index 83466e263cf2f..3d53fc8d5bd09 100644 --- a/src/plugins/vis_type_timelion/server/lib/classes/timelion_function.js +++ b/src/plugins/vis_type_timelion/server/lib/classes/timelion_function.js @@ -25,7 +25,7 @@ export default class TimelionFunction { constructor(name, config) { this.name = name; this.args = config.args || []; - this.argsByName = _.indexBy(this.args, 'name'); + this.argsByName = _.keyBy(this.args, 'name'); this.help = config.help || ''; this.aliases = config.aliases || []; this.extended = config.extended || false; diff --git a/src/plugins/vis_type_timelion/server/lib/load_functions.js b/src/plugins/vis_type_timelion/server/lib/load_functions.js index d6cb63b7c427b..699342cff6a79 100644 --- a/src/plugins/vis_type_timelion/server/lib/load_functions.js +++ b/src/plugins/vis_type_timelion/server/lib/load_functions.js @@ -47,7 +47,7 @@ export default function (directory) { }) .value(); - const functions = _.zipObject(files.concat(directories)); + const functions = _.fromPairs(files.concat(directories)); _.each(functions, function (func) { _.assign(functions, processFunctionDefinition(func)); diff --git a/src/plugins/vis_type_timelion/server/lib/reduce.js b/src/plugins/vis_type_timelion/server/lib/reduce.js index cc13b75fde12d..1a5d78676fc72 100644 --- a/src/plugins/vis_type_timelion/server/lib/reduce.js +++ b/src/plugins/vis_type_timelion/server/lib/reduce.js @@ -42,7 +42,7 @@ async function pairwiseReduce(left, right, fn) { if (allSeriesContainKey(left, 'split') && allSeriesContainKey(right, 'split')) { pairwiseField = 'split'; } - const indexedList = _.indexBy(right.list, pairwiseField); + const indexedList = _.keyBy(right.list, pairwiseField); // ensure seriesLists contain same pairwise labels left.list.forEach((leftSeries) => { diff --git a/src/plugins/vis_type_timelion/server/lib/unzip_pairs.js b/src/plugins/vis_type_timelion/server/lib/unzip_pairs.js index 7a34b5ec98ff0..412049c89ef2f 100644 --- a/src/plugins/vis_type_timelion/server/lib/unzip_pairs.js +++ b/src/plugins/vis_type_timelion/server/lib/unzip_pairs.js @@ -21,7 +21,7 @@ import _ from 'lodash'; export default function unzipPairs(timeValObject) { const paired = _.chain(timeValObject) - .pairs() + .toPairs() .map(function (point) { return [parseInt(point[0], 10), point[1]]; }) diff --git a/src/plugins/vis_type_timelion/server/series_functions/es/lib/agg_response_to_series_list.js b/src/plugins/vis_type_timelion/server/series_functions/es/lib/agg_response_to_series_list.js index 409372da24724..fbae9c5afffe8 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/es/lib/agg_response_to_series_list.js +++ b/src/plugins/vis_type_timelion/server/series_functions/es/lib/agg_response_to_series_list.js @@ -20,7 +20,7 @@ import _ from 'lodash'; export function timeBucketsToPairs(buckets) { - const timestamps = _.pluck(buckets, 'key'); + const timestamps = _.map(buckets, 'key'); const series = {}; _.each(buckets, function (bucket) { _.forOwn(bucket, function (val, key) { diff --git a/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js b/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js index bc0e368fbdab1..e407636c41567 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js +++ b/src/plugins/vis_type_timelion/server/series_functions/es/lib/build_request.js @@ -50,7 +50,7 @@ export default function buildRequest(config, tlConfig, scriptedFields, timeout) .map(function (q) { return [q, { query_string: { query: q } }]; }) - .zipObject() + .fromPairs() .value(), }, aggs: {}, diff --git a/src/plugins/vis_type_timelion/server/series_functions/movingaverage.js b/src/plugins/vis_type_timelion/server/series_functions/movingaverage.js index 108eb0c72f19d..fdaa4dcd8c098 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/movingaverage.js +++ b/src/plugins/vis_type_timelion/server/series_functions/movingaverage.js @@ -81,7 +81,7 @@ export default new Chainable('movingaverage', { } _position = _position || defaultPosition; - if (!_.contains(validPositions, _position)) { + if (!_.includes(validPositions, _position)) { throw new Error( i18n.translate( 'timelion.serverSideErrors.movingaverageFunction.notValidPositionErrorMessage', diff --git a/src/plugins/vis_type_timelion/server/series_functions/movingstd.js b/src/plugins/vis_type_timelion/server/series_functions/movingstd.js index a7ecb4d5b4738..2b9ab08f02ede 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/movingstd.js +++ b/src/plugins/vis_type_timelion/server/series_functions/movingstd.js @@ -61,7 +61,7 @@ export default new Chainable('movingstd', { return alter(args, function (eachSeries, _window, _position) { _position = _position || defaultPosition; - if (!_.contains(positions, _position)) { + if (!_.includes(positions, _position)) { throw new Error( i18n.translate( 'timelion.serverSideErrors.movingstdFunction.notValidPositionErrorMessage', diff --git a/src/plugins/vis_type_timelion/server/series_functions/points.js b/src/plugins/vis_type_timelion/server/series_functions/points.js index bf797bb5aa343..74d616cffd52d 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/points.js +++ b/src/plugins/vis_type_timelion/server/series_functions/points.js @@ -105,7 +105,7 @@ export default new Chainable('points', { } symbol = symbol || defaultSymbol; - if (!_.contains(validSymbols, symbol)) { + if (!_.includes(validSymbols, symbol)) { throw new Error( i18n.translate('timelion.serverSideErrors.pointsFunction.notValidSymbolErrorMessage', { defaultMessage: 'Valid symbols are: {validSymbols}', diff --git a/src/plugins/vis_type_timelion/server/series_functions/static.test.js b/src/plugins/vis_type_timelion/server/series_functions/static.test.js index 88ec9fecd904a..36c5dc708f860 100644 --- a/src/plugins/vis_type_timelion/server/series_functions/static.test.js +++ b/src/plugins/vis_type_timelion/server/series_functions/static.test.js @@ -26,7 +26,7 @@ import invoke from './helpers/invoke_series_fn.js'; describe('static.js', () => { it('returns a series in which all numbers are the same', () => { return invoke(fn, [5]).then((r) => { - expect(_.unique(_.map(r.output.list[0].data, 1))).to.eql([5]); + expect(_.uniq(_.map(r.output.list[0].data, 1))).to.eql([5]); }); }); diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_row.tsx b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_row.tsx index 0363ba486a775..fcb22a9e79707 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_row.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/agg_row.tsx @@ -39,7 +39,7 @@ interface AggRowProps { export function AggRow(props: AggRowProps) { let iconType = 'eyeClosed'; let iconColor = 'subdued'; - const lastSibling = last(props.siblings); + const lastSibling = last(props.siblings) as MetricsItemsSchema; if (lastSibling.id === props.model.id) { iconType = 'eye'; diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js b/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js index beb691f4b7117..0638c6e67f5ef 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/series_change_handler.js @@ -31,7 +31,7 @@ export const seriesChangeHandler = (props, items) => (doc) => { const metric = newMetricAggFn(); metric.type = doc.type; const incompatPipelines = ['calculation', 'series_agg']; - if (!_.contains(incompatPipelines, doc.type)) metric.field = doc.id; + if (!_.includes(incompatPipelines, doc.type)) metric.field = doc.id; return metric; }); } else { diff --git a/src/plugins/vis_type_timeseries/server/lib/get_fields.ts b/src/plugins/vis_type_timeseries/server/lib/get_fields.ts index fd20ff8b024b3..0f0d99bff6f1c 100644 --- a/src/plugins/vis_type_timeseries/server/lib/get_fields.ts +++ b/src/plugins/vis_type_timeseries/server/lib/get_fields.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { uniq } from 'lodash'; +import { uniqBy } from 'lodash'; import { first, map } from 'rxjs/operators'; import { KibanaRequest, RequestHandlerContext } from 'kibana/server'; @@ -87,5 +87,5 @@ export async function getFields( (field) => field.aggregatable && !indexPatterns.isNestedField(field) ); - return uniq(fields, (field) => field.name); + return uniqBy(fields, (field) => field.name); } diff --git a/src/plugins/vis_type_timeseries/server/saved_objects/tsvb_telemetry.ts b/src/plugins/vis_type_timeseries/server/saved_objects/tsvb_telemetry.ts index f6754e5fd9ca4..a9b542af68c9d 100644 --- a/src/plugins/vis_type_timeseries/server/saved_objects/tsvb_telemetry.ts +++ b/src/plugins/vis_type_timeseries/server/saved_objects/tsvb_telemetry.ts @@ -40,7 +40,7 @@ export const tsvbTelemetrySavedObjectType: SavedObjectsType = { }, }, migrations: { - '7.7.0': flow(resetCount), - '7.8.0': flow(resetCount), + '7.7.0': flow(resetCount), + '7.8.0': flow(resetCount), }, }; diff --git a/src/plugins/vis_type_vega/public/vega_fn.ts b/src/plugins/vis_type_vega/public/vega_fn.ts index a9c915fcfb636..6b1af6044a2c4 100644 --- a/src/plugins/vis_type_vega/public/vega_fn.ts +++ b/src/plugins/vis_type_vega/public/vega_fn.ts @@ -22,6 +22,7 @@ import { i18n } from '@kbn/i18n'; import { ExpressionFunctionDefinition, KibanaContext, Render } from '../../expressions/public'; import { VegaVisualizationDependencies } from './plugin'; import { createVegaRequestHandler } from './vega_request_handler'; +import { TimeRange, Query } from '../../data/public'; type Input = KibanaContext | null; type Output = Promise>; @@ -58,9 +59,9 @@ export const createVegaFn = ( const vegaRequestHandler = createVegaRequestHandler(dependencies, context.abortSignal); const response = await vegaRequestHandler({ - timeRange: get(input, 'timeRange'), - query: get(input, 'query'), - filters: get(input, 'filters'), + timeRange: get(input, 'timeRange') as TimeRange, + query: get(input, 'query') as Query, + filters: get(input, 'filters') as any, visParams: { spec: args.spec }, }); diff --git a/src/plugins/vis_type_vislib/public/components/options/metrics_axes/utils.ts b/src/plugins/vis_type_vislib/public/components/options/metrics_axes/utils.ts index 7c4f3b3ec8843..708e8cf15f029 100644 --- a/src/plugins/vis_type_vislib/public/components/options/metrics_axes/utils.ts +++ b/src/plugins/vis_type_vislib/public/components/options/metrics_axes/utils.ts @@ -17,7 +17,7 @@ * under the License. */ -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import { BasicVislibParams, ValueAxis, SeriesParam } from '../../../types'; import { ChartModes, ChartTypes, InterpolationModes, Positions } from '../../../utils/collections'; @@ -67,7 +67,7 @@ const getUpdatedAxisName = ( axisPosition: ValueAxis['position'], valueAxes: BasicVislibParams['valueAxes'] ) => { - const axisName = capitalize(axisPosition) + AXIS_PREFIX; + const axisName = upperFirst(axisPosition) + AXIS_PREFIX; const nextAxisNameNumber = valueAxes.reduce(countNextAxisNumber(axisName, 'name'), 1); return `${axisName}${nextAxisNameNumber}`; diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js b/src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js index 87477332f76e5..4d4660371eaa4 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/labels/flatten_series.js @@ -30,5 +30,5 @@ export function flattenSeries(obj) { obj = obj.rows ? obj.rows : obj.columns; - return _.chain(obj).pluck('series').flattenDeep().value(); + return _.chain(obj).map('series').flattenDeep().value(); } diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js b/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js index 5e78637ef0c02..f04d9d17eeccb 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js @@ -166,9 +166,9 @@ describe('Vislib Labels Module Test Suite', function () { seriesArr = Array.isArray(seriesLabels); rowsArr = Array.isArray(rowsLabels); uniqSeriesLabels = _.chain(rowsData.rows) - .pluck('series') + .map('series') .flattenDeep() - .pluck('label') + .map('label') .uniq() .value(); }); diff --git a/src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js b/src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js index 489cb81306b3d..cf98425c04ce7 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/labels/uniq_labels.js @@ -28,5 +28,5 @@ export function uniqLabels(arr) { throw new TypeError('UniqLabelUtil expects an array of objects'); } - return _(arr).pluck('label').unique().value(); + return _(arr).map('label').uniq().value(); } diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx b/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx index a2fe4d9249bd0..f7e44ed278787 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx +++ b/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx @@ -18,7 +18,7 @@ */ import React, { BaseSyntheticEvent, KeyboardEvent, PureComponent } from 'react'; import classNames from 'classnames'; -import { compact, uniq, map, every, isUndefined } from 'lodash'; +import { compact, uniqBy, map, every, isUndefined } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EuiPopoverProps, EuiIcon, keyCodes, htmlIdGenerator } from '@elastic/eui'; @@ -119,7 +119,7 @@ export class VisLegend extends PureComponent { getSeriesLabels = (data: any[]) => { const values = data.map((chart) => chart.series).reduce((a, b) => a.concat(b), []); - return compact(uniq(values, 'label')).map((label: any) => ({ + return compact(uniqBy(values, 'label')).map((label: any) => ({ ...label, values: [label.values[0].seriesRaw], })); diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts b/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts index 6b507862fb841..da046af83a495 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts +++ b/src/plugins/vis_type_vislib/public/vislib/components/legend/pie_utils.ts @@ -39,7 +39,7 @@ export function getPieNames(data: any[]): string[] { }); }); - return _.uniq(names, 'label'); + return _.uniqBy(names, 'label'); } /** @@ -61,7 +61,7 @@ function getNames(data: any, columns: any): string[] { .sortBy(function (obj) { return obj.index; }) - .unique(function (d) { + .uniqBy(function (d) { return d.label; }) .value(); diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js b/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js index e22105d5a086f..5324dc5318be5 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js @@ -110,7 +110,7 @@ function getOverflow(size, pos, containers) { } function mergeOverflows(dest, src) { - _.merge(dest, src, function (a, b) { + _.mergeWith(dest, src, function (a, b) { if (a == null || b == null) return a || b; if (a < 0 && b < 0) return Math.min(a, b); return Math.max(a, b); @@ -131,7 +131,7 @@ function pickPlacement(prop, pos, overflow, prev, pref, fallback, placement) { const stash = '_' + prop; // list of directions in order of preference - const dirs = _.unique([prev[stash], pref, fallback].filter(Boolean)); + const dirs = _.uniq([prev[stash], pref, fallback].filter(Boolean)); let dir; let value; diff --git a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js b/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js index 0bfcedc5e6055..bafc3199de896 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js @@ -218,7 +218,7 @@ Tooltip.prototype.render = function () { if (html) allContents.push({ id, html, order }); - const allHtml = _(allContents).sortBy('order').pluck('html').compact().join('\n'); + const allHtml = _(allContents).sortBy('order').map('html').compact().join('\n'); if (allHtml) { $tooltip.html(allHtml); diff --git a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js b/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js index 3269f54a621d0..8b7a44d95bb3b 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js +++ b/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/flatten_data.js @@ -35,9 +35,9 @@ export function flattenData(obj) { } return _(charts ? charts : [obj]) - .pluck('series') + .map('series') .flattenDeep() - .pluck('values') + .map('values') .flattenDeep() .filter(Boolean) .value(); diff --git a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts b/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts index c5fb4761eb9ee..8a1f80df9f4db 100644 --- a/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts +++ b/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_get_series.ts @@ -71,7 +71,7 @@ export function getSeries(table: Table, chart: Chart) { seriesLabel = prefix + seriesLabel; } - point.seriesId = seriesId; + (point.seriesId as string | number) = seriesId; addToSiri( seriesMap, point, diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/data.js b/src/plugins/vis_type_vislib/public/vislib/lib/data.js index 98d384f95a839..3633063966e17 100644 --- a/src/plugins/vis_type_vislib/public/vislib/lib/data.js +++ b/src/plugins/vis_type_vislib/public/vislib/lib/data.js @@ -248,7 +248,7 @@ export class Data { const visData = this.getVisData(); return _.reduce( - _.pluck(visData, 'geoJson.properties'), + _.map(visData, 'geoJson.properties'), function (minMax, props) { return { min: Math.min(props.min, minMax.min), @@ -312,7 +312,7 @@ export class Data { * @returns {Array} Value objects */ flatten() { - return _(this.chartData()).pluck('series').flattenDeep().pluck('values').flattenDeep().value(); + return _(this.chartData()).map('series').flattenDeep().map('values').flattenDeep().value(); } /** @@ -383,7 +383,7 @@ export class Data { .sortBy(function (obj) { return obj.index; }) - .unique(function (d) { + .uniqBy(function (d) { return d.label; }) .value(); @@ -452,7 +452,7 @@ export class Data { }); }); - return _.uniq(names, 'label'); + return _.uniqBy(names, 'label'); } /** diff --git a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js b/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js index 37f395aab4011..4c50472b9d11a 100644 --- a/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js +++ b/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js @@ -18,7 +18,7 @@ */ import d3 from 'd3'; -import { get, pull, restParam, size, reduce } from 'lodash'; +import { get, pull, rest, size, reduce } from 'lodash'; import $ from 'jquery'; import { DIMMING_OPACITY_SETTING } from '../../../common'; @@ -97,7 +97,7 @@ export class Dispatch { * @param {*} [arg...] - any number of arguments that will be applied to each handler * @return {Dispatch} - this, for chaining */ - emit = restParam(function (name, args) { + emit = rest(function (name, args) { if (!this._listeners[name]) { return this; } diff --git a/src/plugins/visualizations/public/persisted_state/persisted_state.ts b/src/plugins/visualizations/public/persisted_state/persisted_state.ts index 7465f969f456f..c926c456da219 100644 --- a/src/plugins/visualizations/public/persisted_state/persisted_state.ts +++ b/src/plugins/visualizations/public/persisted_state/persisted_state.ts @@ -19,8 +19,17 @@ import { EventEmitter } from 'events'; -import { isPlainObject, cloneDeep, get, set, isEqual, isString, merge } from 'lodash'; -import toPath from 'lodash/internal/toPath'; +import { + isPlainObject, + cloneDeep, + get, + set, + isEqual, + isString, + merge, + mergeWith, + toPath, +} from 'lodash'; function prepSetParams(key: PersistedStateKey, value: any, path: PersistedStatePath) { // key must be the value, set the entire state using it @@ -150,7 +159,7 @@ export class PersistedState extends EventEmitter { while (partialPath.length > 0) { const lastKey = partialPath.splice(partialPath.length - 1, 1)[0]; const statePath = [...this._path, partialPath]; - const stateVal = statePath.length > 0 ? get(stateTree, statePath) : stateTree; + const stateVal = statePath.length > 0 ? get(stateTree, statePath as string[]) : stateTree; // if stateVal isn't an object, do nothing if (!isPlainObject(stateVal)) return; @@ -240,7 +249,7 @@ export class PersistedState extends EventEmitter { // If `mergeMethod` is provided it is invoked to produce the merged values of the // destination and source properties. // If `mergeMethod` returns `undefined` the default merging method is used - this._mergedState = merge(targetObj, sourceObj, mergeMethod); + this._mergedState = mergeWith(targetObj, sourceObj, mergeMethod); // sanity check; verify that there are actually changes if (isEqual(this._mergedState, this._defaultState)) this._changedState = {}; diff --git a/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts b/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts index 0c27c3a2c7782..60945b912e1b3 100644 --- a/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts +++ b/src/plugins/visualizations/public/saved_visualizations/find_list_items.ts @@ -49,7 +49,7 @@ export async function findListItems({ }, acc); }, {} as { [visType: string]: VisualizationsAppExtension }); const searchOption = (field: string, ...defaults: string[]) => - _(extensions).pluck(field).concat(defaults).compact().flatten().uniq().value() as string[]; + _(extensions).map(field).concat(defaults).compact().flatten().uniq().value() as string[]; const searchOptions = { type: searchOption('docTypes', 'visualization'), searchFields: searchOption('searchFields', 'title^3', 'description'), diff --git a/src/plugins/visualizations/public/wizard/type_selection/type_selection.tsx b/src/plugins/visualizations/public/wizard/type_selection/type_selection.tsx index 47757593958d6..dc6ac4919a4c4 100644 --- a/src/plugins/visualizations/public/wizard/type_selection/type_selection.tsx +++ b/src/plugins/visualizations/public/wizard/type_selection/type_selection.tsx @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; import React, { ChangeEvent } from 'react'; import { @@ -201,7 +201,7 @@ class TypeSelection extends React.Component { diff --git a/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts b/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts index 27fe722019a27..74881b9d99ae8 100644 --- a/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts +++ b/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts @@ -65,7 +65,7 @@ const migrateIndexPattern: SavedObjectMigrationFn = (doc) => { // [TSVB] Migrate percentile-rank aggregation (value -> values) const migratePercentileRankAggregation: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState; if (visStateJSON) { @@ -101,7 +101,7 @@ const migratePercentileRankAggregation: SavedObjectMigrationFn = (doc) // [TSVB] Remove stale opperator key const migrateOperatorKeyTypo: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState; if (visStateJSON) { @@ -137,7 +137,7 @@ const migrateOperatorKeyTypo: SavedObjectMigrationFn = (doc) => { * @see https://github.com/elastic/kibana/pull/58462/files#diff-ae69fe15b20a5099d038e9bbe2ed3849 **/ const migrateSplitByChartRow: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState: any; if (visStateJSON) { @@ -177,7 +177,7 @@ const migrateSplitByChartRow: SavedObjectMigrationFn = (doc) => { // Migrate date histogram aggregation (remove customInterval) const migrateDateHistogramAggregation: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState; if (visStateJSON) { @@ -219,7 +219,7 @@ const migrateDateHistogramAggregation: SavedObjectMigrationFn = (doc) }; const removeDateHistogramTimeZones: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { let visState; try { @@ -251,7 +251,7 @@ const removeDateHistogramTimeZones: SavedObjectMigrationFn = (doc) => // migrate gauge verticalSplit to alignment // https://github.com/elastic/kibana/issues/34636 const migrateGaugeVerticalSplitToAlignment: SavedObjectMigrationFn = (doc, logger) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { try { @@ -289,7 +289,7 @@ const transformFilterStringToQueryObject: SavedObjectMigrationFn = (do // Migrate filters // If any filters exist and they are a string, we assume it to be lucene and transform the filter into an object accordingly const newDoc = cloneDeep(doc); - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { let visState; try { @@ -298,7 +298,7 @@ const transformFilterStringToQueryObject: SavedObjectMigrationFn = (do // let it go, the data is invalid and we'll leave it as is } if (visState) { - const visType = get(visState, 'params.type'); + const visType = get(visState, 'params.type'); const tsvbTypes = ['metric', 'markdown', 'top_n', 'gauge', 'table', 'timeseries']; if (tsvbTypes.indexOf(visType) === -1) { // skip @@ -373,7 +373,7 @@ const transformSplitFiltersStringToQueryObject: SavedObjectMigrationFn // Migrate split_filters in TSVB objects that weren't migrated in 7.3 // If any filters exist and they are a string, we assume them to be lucene syntax and transform the filter into an object accordingly const newDoc = cloneDeep(doc); - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { let visState; try { @@ -382,7 +382,7 @@ const transformSplitFiltersStringToQueryObject: SavedObjectMigrationFn // let it go, the data is invalid and we'll leave it as is } if (visState) { - const visType = get(visState, 'params.type'); + const visType = get(visState, 'params.type'); const tsvbTypes = ['metric', 'markdown', 'top_n', 'gauge', 'table', 'timeseries']; if (tsvbTypes.indexOf(visType) === -1) { // skip @@ -415,7 +415,7 @@ const transformSplitFiltersStringToQueryObject: SavedObjectMigrationFn }; const migrateFiltersAggQuery: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { try { @@ -447,7 +447,7 @@ const migrateFiltersAggQuery: SavedObjectMigrationFn = (doc) => { }; const replaceMovAvgToMovFn: SavedObjectMigrationFn = (doc, logger) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState; if (visStateJSON) { @@ -495,7 +495,7 @@ const replaceMovAvgToMovFn: SavedObjectMigrationFn = (doc, logger) => }; const migrateFiltersAggQueryStringQueries: SavedObjectMigrationFn = (doc, logger) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { try { @@ -533,7 +533,7 @@ const addDocReferences: SavedObjectMigrationFn = (doc) => ({ }); const migrateSavedSearch: SavedObjectMigrationFn = (doc) => { - const savedSearchId = get(doc, 'attributes.savedSearchId'); + const savedSearchId = get(doc, 'attributes.savedSearchId'); if (savedSearchId && doc.references) { doc.references.push({ @@ -550,7 +550,7 @@ const migrateSavedSearch: SavedObjectMigrationFn = (doc) => { }; const migrateControls: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); if (visStateJSON) { let visState; @@ -617,7 +617,7 @@ const migrateTableSplits: SavedObjectMigrationFn = (doc) => { }; const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { - const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); + const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); if (searchSourceJSON) { let searchSource: any; @@ -651,7 +651,7 @@ const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { // [TSVB] Default color palette is changing, keep the default for older viz const migrateTsvbDefaultColorPalettes: SavedObjectMigrationFn = (doc) => { - const visStateJSON = get(doc, 'attributes.visState'); + const visStateJSON = get(doc, 'attributes.visState'); let visState; if (visStateJSON) { @@ -693,30 +693,24 @@ export const visualizationSavedObjectTypeMigrations = { * in that version. So we apply this twice, once with 6.7.2 and once with 7.0.1 while the backport to 6.7 * only contained the 6.7.2 migration and not the 7.0.1 migration. */ - '6.7.2': flow>( - migrateMatchAllQuery, - removeDateHistogramTimeZones - ), - '7.0.0': flow>( + '6.7.2': flow(migrateMatchAllQuery, removeDateHistogramTimeZones), + '7.0.0': flow( addDocReferences, migrateIndexPattern, migrateSavedSearch, migrateControls, migrateTableSplits ), - '7.0.1': flow>(removeDateHistogramTimeZones), - '7.2.0': flow>( - migratePercentileRankAggregation, - migrateDateHistogramAggregation - ), - '7.3.0': flow>( + '7.0.1': flow(removeDateHistogramTimeZones), + '7.2.0': flow(migratePercentileRankAggregation, migrateDateHistogramAggregation), + '7.3.0': flow( migrateGaugeVerticalSplitToAlignment, transformFilterStringToQueryObject, migrateFiltersAggQuery, replaceMovAvgToMovFn ), - '7.3.1': flow>(migrateFiltersAggQueryStringQueries), - '7.4.2': flow>(transformSplitFiltersStringToQueryObject), - '7.7.0': flow>(migrateOperatorKeyTypo, migrateSplitByChartRow), - '7.8.0': flow>(migrateTsvbDefaultColorPalettes), + '7.3.1': flow(migrateFiltersAggQueryStringQueries), + '7.4.2': flow(transformSplitFiltersStringToQueryObject), + '7.7.0': flow(migrateOperatorKeyTypo, migrateSplitByChartRow), + '7.8.0': flow(migrateTsvbDefaultColorPalettes), }; diff --git a/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts b/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts index 1e05c48ba7daf..52b7e3ede298b 100644 --- a/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts +++ b/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts @@ -17,7 +17,7 @@ * under the License. */ -import { isFunction, omit, union } from 'lodash'; +import { isFunction, omitBy, union } from 'lodash'; import { migrateAppState } from './migrate_app_state'; import { @@ -35,9 +35,9 @@ interface Arguments { } function toObject(state: PureVisState): PureVisState { - return omit(state, (value, key: string) => { + return omitBy(state, (value, key: string) => { return key.charAt(0) === '$' || key.charAt(0) === '_' || isFunction(value); - }); + }) as PureVisState; } export function createVisualizeAppState({ stateDefaults, kbnUrlStateStorage }: Arguments) { diff --git a/src/plugins/visualize/public/application/utils/migrate_app_state.ts b/src/plugins/visualize/public/application/utils/migrate_app_state.ts index f5f1a1785bbdf..94eba5a6d7ce2 100644 --- a/src/plugins/visualize/public/application/utils/migrate_app_state.ts +++ b/src/plugins/visualize/public/application/utils/migrate_app_state.ts @@ -36,7 +36,7 @@ export function migrateAppState(appState: VisualizeAppState) { return appState; } - const visAggs: any = get(appState, 'vis.aggs'); + const visAggs: any = get(appState, 'vis.aggs'); if (visAggs) { let splitCount = 0; diff --git a/src/setup_node_env/harden.js b/src/setup_node_env/harden.js deleted file mode 100644 index dead3db1d60b4..0000000000000 --- a/src/setup_node_env/harden.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var hook = require('require-in-the-middle'); - -hook(['child_process'], function (exports, name) { - return require(`./patches/${name}`)(exports); // eslint-disable-line import/no-dynamic-require -}); diff --git a/src/setup_node_env/patches/child_process.js b/src/setup_node_env/harden/child_process.js similarity index 97% rename from src/setup_node_env/patches/child_process.js rename to src/setup_node_env/harden/child_process.js index fb857b2092ee0..6b1ba779605c0 100644 --- a/src/setup_node_env/patches/child_process.js +++ b/src/setup_node_env/harden/child_process.js @@ -16,12 +16,13 @@ * specific language governing permissions and limitations * under the License. */ +var hook = require('require-in-the-middle'); // Ensure, when spawning a new child process, that the `options` and the // `options.env` object passed to the child process function doesn't inherit // from `Object.prototype`. This protects against similar RCE vulnerabilities // as described in CVE-2019-7609 -module.exports = function (cp) { +hook(['child_process'], function (cp) { // The `exec` function is currently just a wrapper around `execFile`. So for // now there's no need to patch it. If this changes in the future, our tests // will fail and we can uncomment the line below. @@ -36,7 +37,7 @@ module.exports = function (cp) { cp.spawnSync = new Proxy(cp.spawnSync, { apply: patchOptions(true) }); return cp; -}; +}); function patchOptions(hasArgs) { return function apply(target, thisArg, args) { diff --git a/typings/lodash.topath/index.d.ts b/src/setup_node_env/harden/index.js similarity index 87% rename from typings/lodash.topath/index.d.ts rename to src/setup_node_env/harden/index.js index 3630a13f72c28..25cb3bcd78ffb 100644 --- a/typings/lodash.topath/index.d.ts +++ b/src/setup_node_env/harden/index.js @@ -17,7 +17,5 @@ * under the License. */ -declare module 'lodash/internal/toPath' { - function toPath(value: string | string[]): string[]; - export = toPath; -} +require('./child_process'); +require('./lodash_template'); diff --git a/src/setup_node_env/harden/lodash_template.js b/src/setup_node_env/harden/lodash_template.js new file mode 100644 index 0000000000000..2add624f9f326 --- /dev/null +++ b/src/setup_node_env/harden/lodash_template.js @@ -0,0 +1,68 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +var hook = require('require-in-the-middle'); +var isIterateeCall = require('lodash/_isIterateeCall'); + +hook(['lodash'], function (lodash) { + lodash.template = createProxy(lodash.template); + return lodash; +}); + +hook(['lodash/template'], function (template) { + return createProxy(template); +}); + +hook(['lodash/fp'], function (fp) { + fp.template = createFpProxy(fp.template); + return fp; +}); + +hook(['lodash/fp/template'], function (template) { + return createFpProxy(template); +}); + +function createProxy(template) { + return new Proxy(template, { + apply: function (target, thisArg, args) { + if (args.length === 1 || isIterateeCall(args)) { + return target.apply(thisArg, [args[0], { sourceURL: '' }]); + } + + var options = Object.assign({}, args[1]); + options.sourceURL = (options.sourceURL + '').replace(/\s/g, ' '); + var newArgs = args.slice(0); // copy + newArgs.splice(1, 1, options); // replace options in the copy + return target.apply(thisArg, newArgs); + }, + }); +} + +function createFpProxy(template) { + // we have to do the require here, so that we get the patched version + var _ = require('lodash'); + return new Proxy(template, { + apply: function (target, thisArg, args) { + // per https://github.com/lodash/lodash/wiki/FP-Guide + // > Iteratee arguments are capped to avoid gotchas with variadic iteratees. + // this means that we can't specify the options in the second argument to fp.template because it's ignored. + // Instead, we're going to use the non-FP _.template with only the first argument which has already been patched + return _.template(args[0]); + }, + }); +} diff --git a/src/test_utils/get_url.js b/src/test_utils/get_url.js index fbe16e798fff9..182cb8e6e118d 100644 --- a/src/test_utils/get_url.js +++ b/src/test_utils/get_url.js @@ -44,7 +44,7 @@ export default function getUrl(config, app) { } getUrl.noAuth = function getUrlNoAuth(config, app) { - config = _.pick(config, function (val, param) { + config = _.pickBy(config, function (val, param) { return param !== 'auth'; }); return getUrl(config, app); diff --git a/src/test_utils/kbn_server.ts b/src/test_utils/kbn_server.ts index 12f7eb5a0a043..6a20261421b5b 100644 --- a/src/test_utils/kbn_server.ts +++ b/src/test_utils/kbn_server.ts @@ -217,7 +217,7 @@ export function createTestServers({ if (!adjustTimeout) { throw new Error('adjustTimeout is required in order to avoid flaky tests'); } - const license = get<'oss' | 'basic' | 'gold' | 'trial'>(settings, 'es.license', 'oss'); + const license = get(settings, 'es.license', 'oss'); const usersToBeAdded = get(settings, 'users', []); if (usersToBeAdded.length > 0) { if (license !== 'trial') { diff --git a/test/api_integration/apis/saved_objects/migrations.js b/test/api_integration/apis/saved_objects/migrations.js index d0ff4cc06c57e..9ea3cf087be90 100644 --- a/test/api_integration/apis/saved_objects/migrations.js +++ b/test/api_integration/apis/saved_objects/migrations.js @@ -293,7 +293,7 @@ export default ({ getService }) => { // It only created the original and the dest assert.deepEqual( - _.pluck( + _.map( await callCluster('cat.indices', { index: '.migration-c*', format: 'json' }), 'index' ).sort(), diff --git a/test/functional/apps/management/_import_objects.js b/test/functional/apps/management/_import_objects.js index c69111be6972b..03db3a2b108f2 100644 --- a/test/functional/apps/management/_import_objects.js +++ b/test/functional/apps/management/_import_objects.js @@ -19,7 +19,7 @@ import expect from '@kbn/expect'; import path from 'path'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const kibanaServer = getService('kibanaServer'); @@ -50,12 +50,12 @@ export default function ({ getService, getPageObjects }) { await PageObjects.savedObjects.clickImportDone(); // get all the elements in the table, and index them by the 'title' visible text field - const elements = indexBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); + const elements = keyBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); log.debug("check that 'Log Agents' is in table as a visualization"); expect(elements['Log Agents'].objectType).to.eql('visualization'); await elements['logstash-*'].relationshipsElement.click(); - const flyout = indexBy(await PageObjects.savedObjects.getRelationshipFlyout(), 'title'); + const flyout = keyBy(await PageObjects.savedObjects.getRelationshipFlyout(), 'title'); log.debug( "check that 'Shared-Item Visualization AreaChart' shows 'logstash-*' as it's Parent" ); @@ -150,7 +150,7 @@ export default function ({ getService, getPageObjects }) { }); it('should not import saved objects linked to saved searches when saved search index pattern does not exist', async function () { - const elements = indexBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); + const elements = keyBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); await elements['logstash-*'].checkbox.click(); await PageObjects.savedObjects.clickDelete(); @@ -182,7 +182,7 @@ export default function ({ getService, getPageObjects }) { it('should import saved objects with index patterns when index patterns does not exists', async () => { // First, we need to delete the index pattern - const elements = indexBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); + const elements = keyBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); await elements['logstash-*'].checkbox.click(); await PageObjects.savedObjects.clickDelete(); @@ -321,7 +321,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.savedObjects.clickImportDone(); // Second, we need to delete the index pattern - const elements = indexBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); + const elements = keyBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); await elements['logstash-*'].checkbox.click(); await PageObjects.savedObjects.clickDelete(); @@ -353,7 +353,7 @@ export default function ({ getService, getPageObjects }) { it('should import saved objects with index patterns when index patterns does not exists', async () => { // First, we need to delete the index pattern - const elements = indexBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); + const elements = keyBy(await PageObjects.savedObjects.getElementsInTable(), 'title'); await elements['logstash-*'].checkbox.click(); await PageObjects.savedObjects.clickDelete(); diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts index d6a4fc91481de..2d35551b04808 100644 --- a/test/functional/services/common/browser.ts +++ b/test/functional/services/common/browser.ts @@ -17,7 +17,7 @@ * under the License. */ -import { cloneDeep } from 'lodash'; +import { cloneDeepWith } from 'lodash'; import { Key, Origin } from 'selenium-webdriver'; // @ts-ignore internal modules are not typed import { LegacyActionSequence } from 'selenium-webdriver/lib/actions'; @@ -471,7 +471,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { ): Promise { return await driver.executeScript( fn, - ...cloneDeep(args, (arg) => { + ...cloneDeepWith(args, (arg) => { if (arg instanceof WebElementWrapper) { return arg._webElement; } @@ -501,7 +501,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { ): Promise { return await driver.executeAsyncScript( fn, - ...cloneDeep(args, (arg) => { + ...cloneDeepWith(args, (arg) => { if (arg instanceof WebElementWrapper) { return arg._webElement; } diff --git a/test/harden/lodash_template.js b/test/harden/lodash_template.js new file mode 100644 index 0000000000000..170e3a8fba43e --- /dev/null +++ b/test/harden/lodash_template.js @@ -0,0 +1,181 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +require('../../src/setup_node_env'); +const _ = require('lodash'); +const template = require('lodash/template'); +const fp = require('lodash/fp'); +const fpTemplate = require('lodash/fp/template'); +const test = require('tape'); + +Object.prototype.sourceURL = '\u2028\u2029\n;global.whoops=true'; // eslint-disable-line no-extend-native + +test.onFinish(() => { + delete Object.prototype.sourceURL; +}); + +test('test setup ok', (t) => { + t.equal({}.sourceURL, '\u2028\u2029\n;global.whoops=true'); + t.end(); +}); + +[_.template, template].forEach((fn) => { + test(`_.template('<%= foo %>')`, (t) => { + const output = fn('<%= foo %>')({ foo: 'bar' }); + t.equal(output, 'bar'); + t.equal(global.whoops, undefined); + t.end(); + }); + + test(`_.template('<%= foo %>', {})`, (t) => { + const output = fn('<%= foo %>', Object.freeze({}))({ foo: 'bar' }); + t.equal(output, 'bar'); + t.equal(global.whoops, undefined); + t.end(); + }); + + test(`_.template('<%= data.foo %>', { variable: 'data' })`, (t) => { + const output = fn('<%= data.foo %>', Object.freeze({ variable: 'data' }))({ foo: 'bar' }); + t.equal(output, 'bar'); + t.equal(global.whoops, undefined); + t.end(); + }); + + test(`_.template('<%= foo %>', { sourceURL: '/foo/bar' })`, (t) => { + // throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do + const template = fn('<% throw new Error() %>', Object.freeze({ sourceURL: '/foo/bar' })); + t.plan(2); + try { + template(); + } catch (err) { + const path = parsePathFromStack(err.stack); + t.equal(path, '/foo/bar'); + t.equal(global.whoops, undefined); + } + }); + + test(`_.template('<%= foo %>', { sourceURL: '\\u2028\\u2029\\nglobal.whoops=true' })`, (t) => { + // throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do + const template = fn( + '<% throw new Error() %>', + Object.freeze({ sourceURL: '\u2028\u2029\nglobal.whoops=true' }) + ); + t.plan(2); + try { + template(); + } catch (err) { + const path = parsePathFromStack(err.stack); + t.equal(path, 'global.whoops=true'); + t.equal(global.whoops, undefined); + } + }); + + test(`_.template used as an iteratee call(`, (t) => { + const templateStrArr = ['<%= data.foo %>', 'example <%= data.foo %>']; + const output = _.map(templateStrArr, fn); + + t.equal(output[0]({ data: { foo: 'bar' } }), 'bar'); + t.equal(output[1]({ data: { foo: 'bar' } }), 'example bar'); + t.equal(global.whoops, undefined); + t.end(); + }); +}); + +[fp.template, fpTemplate].forEach((fn) => { + test(`fp.template('<%= foo %>')`, (t) => { + const output = fn('<%= foo %>')({ foo: 'bar' }); + t.equal(output, 'bar'); + t.equal(global.whoops, undefined); + t.end(); + }); + + test(`fp.template('<%= foo %>', {})`, (t) => { + // fp.template ignores the second argument, this is negligible in this situation since options is an empty object + const output = fn('<%= foo %>', Object.freeze({}))({ foo: 'bar' }); + t.equal(output, 'bar'); + t.equal(global.whoops, undefined); + t.end(); + }); + + test(`fp.template('<%= data.foo %>', { variable: 'data' })`, (t) => { + // fp.template ignores the second argument, this causes an error to be thrown + t.plan(2); + try { + fn('<%= data.foo %>', Object.freeze({ variable: 'data' }))({ foo: 'bar' }); + } catch (err) { + t.equal(err.message, 'data is not defined'); + t.equal(global.whoops, undefined); + } + }); + + test(`fp.template('<%= foo %>', { sourceURL: '/foo/bar' })`, (t) => { + // fp.template ignores the second argument, the sourceURL is ignored + // throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do + // our patching to hard-code the sourceURL and use non-FP _.template does slightly alter the stack-traces but it's negligible + const template = fn('<% throw new Error() %>', Object.freeze({ sourceURL: '/foo/bar' })); + t.plan(3); + try { + template(); + } catch (err) { + const path = parsePathFromStack(err.stack); + t.match(path, /^eval at /); + t.doesNotMatch(path, /\/foo\/bar/); + t.equal(global.whoops, undefined); + } + }); + + test(`fp.template('<%= foo %>', { sourceURL: '\\u2028\\u2029\\nglobal.whoops=true' })`, (t) => { + // fp.template ignores the second argument, the sourceURL is ignored + // throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do + // our patching to hard-code the sourceURL and use non-FP _.template does slightly alter the stack-traces but it's negligible + const template = fn( + '<% throw new Error() %>', + Object.freeze({ sourceURL: '\u2028\u2029\nglobal.whoops=true' }) + ); + t.plan(3); + try { + template(); + } catch (err) { + const path = parsePathFromStack(err.stack); + t.match(path, /^eval at /); + t.doesNotMatch(path, /\/foo\/bar/); + t.equal(global.whoops, undefined); + } + }); + + test(`fp.template used as an iteratee call(`, (t) => { + const templateStrArr = ['<%= data.foo %>', 'example <%= data.foo %>']; + const output = fp.map(fn)(templateStrArr); + + t.equal(output[0]({ data: { foo: 'bar' } }), 'bar'); + t.equal(output[1]({ data: { foo: 'bar' } }), 'example bar'); + t.equal(global.whoops, undefined); + t.end(); + }); +}); + +function parsePathFromStack(stack) { + const lines = stack.split('\n'); + // the frame starts at the second line + const frame = lines[1]; + + // the path is in parathensis, and ends with a colon before the line/column numbers + const [, path] = /\(([^:]+)/.exec(frame); + return path; +} diff --git a/test/tsconfig.json b/test/tsconfig.json index a270144bd49fe..87e79b295315f 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -14,7 +14,6 @@ "include": [ "**/*.ts", "**/*.tsx", - "../typings/lodash.topath/*.ts", "../typings/elastic__node_crypto.d.ts", "typings/**/*" ], diff --git a/test/visual_regression/services/visual_testing/visual_testing.ts b/test/visual_regression/services/visual_testing/visual_testing.ts index 3a71c3aa9d3d6..e35ef41420dd6 100644 --- a/test/visual_regression/services/visual_testing/visual_testing.ts +++ b/test/visual_regression/services/visual_testing/visual_testing.ts @@ -19,7 +19,6 @@ import { postSnapshot } from '@percy/agent/dist/utils/sdk-utils'; import { Test } from 'mocha'; -import _ from 'lodash'; import testSubjSelector from '@kbn/test-subj-selector'; diff --git a/x-pack/legacy/plugins/beats_management/server/lib/adapters/beats/elasticsearch_beats_adapter.ts b/x-pack/legacy/plugins/beats_management/server/lib/adapters/beats/elasticsearch_beats_adapter.ts index 0600ed8e3fbf6..7c495ad605f6d 100644 --- a/x-pack/legacy/plugins/beats_management/server/lib/adapters/beats/elasticsearch_beats_adapter.ts +++ b/x-pack/legacy/plugins/beats_management/server/lib/adapters/beats/elasticsearch_beats_adapter.ts @@ -38,7 +38,7 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { if (!response.found) { return null; } - const beat = _get(response, '_source.beat'); + const beat = _get(response, '_source.beat') as CMBeat; beat.tags = beat.tags || []; return beat; } @@ -101,7 +101,7 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { const response = await this.database.search(user, params); - const beats = _get(response, 'hits.hits', []); + const beats = _get(response, 'hits.hits', []) as CMBeat[]; if (beats.length === 0) { return []; @@ -127,14 +127,12 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { const response = await this.database.search(user, params); - const beats = _get(response, 'hits.hits', []); + const beats = _get(response, 'hits.hits', []) as CMBeat[]; if (beats.length === 0) { return null; } - return omit(_get(formatWithTags(beats[0]), '_source.beat'), [ - 'access_token', - ]); + return omit(_get(formatWithTags(beats[0]), '_source.beat'), ['access_token']) as CMBeat; } public async getAll(user: FrameworkUser, ESQuery?: any) { @@ -171,7 +169,7 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { if (!response) { return []; } - const beats = _get(response, 'hits.hits', []); + const beats = _get(response, 'hits.hits', []) as any; return beats.map((beat: any) => formatWithTags(omit(beat._source.beat as CMBeat, ['access_token']) as CMBeat) @@ -202,7 +200,7 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { index: INDEX_NAMES.BEATS, refresh: 'wait_for', }); - return _get(response, 'items', []).map((item: any, resultIdx: number) => ({ + return (_get(response, 'items', []) as any).map((item: any, resultIdx: number) => ({ idxInRequest: removals[resultIdx].idxInRequest, result: item.update.result, status: item.update.status, @@ -237,7 +235,7 @@ export class ElasticsearchBeatsAdapter implements CMBeatsAdapter { refresh: 'wait_for', }); // console.log(response.items[0].update.error); - return _get(response, 'items', []).map((item: any, resultIdx: any) => ({ + return (_get(response, 'items', []) as any).map((item: any, resultIdx: any) => ({ idxInRequest: assignments[resultIdx].idxInRequest, result: item.update.result, status: item.update.status, diff --git a/x-pack/legacy/plugins/beats_management/server/lib/adapters/configuration_blocks/elasticsearch_configuration_block_adapter.ts b/x-pack/legacy/plugins/beats_management/server/lib/adapters/configuration_blocks/elasticsearch_configuration_block_adapter.ts index 2bc6f18756447..ec559c3ee479c 100644 --- a/x-pack/legacy/plugins/beats_management/server/lib/adapters/configuration_blocks/elasticsearch_configuration_block_adapter.ts +++ b/x-pack/legacy/plugins/beats_management/server/lib/adapters/configuration_blocks/elasticsearch_configuration_block_adapter.ts @@ -35,7 +35,7 @@ export class ElasticsearchConfigurationBlockAdapter implements ConfigurationBloc }; const response = await this.database.search(user, params); - const configs = get(response, 'hits.hits', []); + const configs = get(response, 'hits.hits', []); return configs.map((tag: any) => ({ ...tag._source.tag, config: JSON.parse(tag._source.tag) })); } @@ -71,7 +71,7 @@ export class ElasticsearchConfigurationBlockAdapter implements ConfigurationBloc } else { response = await this.database.search(user, params); } - const configs = get(response, 'hits.hits', []); + const configs = get(response, 'hits.hits', []); return { blocks: configs.map((block: any) => ({ diff --git a/x-pack/legacy/plugins/beats_management/server/lib/adapters/tags/elasticsearch_tags_adapter.ts b/x-pack/legacy/plugins/beats_management/server/lib/adapters/tags/elasticsearch_tags_adapter.ts index 4e032001809f2..b5be3cfa99e5d 100644 --- a/x-pack/legacy/plugins/beats_management/server/lib/adapters/tags/elasticsearch_tags_adapter.ts +++ b/x-pack/legacy/plugins/beats_management/server/lib/adapters/tags/elasticsearch_tags_adapter.ts @@ -43,7 +43,7 @@ export class ElasticsearchTagsAdapter implements CMTagsAdapter { }; } const response = await this.database.search(user, params); - const tags = get(response, 'hits.hits', []); + const tags = get(response, 'hits.hits', []) as any; return tags.map((tag: any) => ({ hasConfigurationBlocksTypes: [], ...tag._source.tag })); } @@ -63,7 +63,7 @@ export class ElasticsearchTagsAdapter implements CMTagsAdapter { const beatsResponse = await this.database.search(user, params); - const beats = get(beatsResponse, 'hits.hits', []).map( + const beats = (get(beatsResponse, 'hits.hits', []) as BeatTag[]).map( (beat: any) => beat._source.beat ); @@ -142,7 +142,7 @@ export class ElasticsearchTagsAdapter implements CMTagsAdapter { }; const response = await this.database.index(user, params); - return get(response, 'result'); + return get(response, 'result') as string; } public async getWithoutConfigTypes( @@ -172,7 +172,7 @@ export class ElasticsearchTagsAdapter implements CMTagsAdapter { size: 10000, }; const response = await this.database.search(user, params); - const tags = get(response, 'hits.hits', []); + const tags = get(response, 'hits.hits', []) as any; return tags.map((tag: any) => ({ hasConfigurationBlocksTypes: [], ...tag._source.tag })); } diff --git a/x-pack/legacy/plugins/beats_management/server/lib/adapters/tokens/elasticsearch_tokens_adapter.ts b/x-pack/legacy/plugins/beats_management/server/lib/adapters/tokens/elasticsearch_tokens_adapter.ts index 4987e4dbd4e0a..6c5125ea4e0eb 100644 --- a/x-pack/legacy/plugins/beats_management/server/lib/adapters/tokens/elasticsearch_tokens_adapter.ts +++ b/x-pack/legacy/plugins/beats_management/server/lib/adapters/tokens/elasticsearch_tokens_adapter.ts @@ -34,10 +34,10 @@ export class ElasticsearchTokensAdapter implements CMTokensAdapter { const response = await this.database.get(user, params); - const tokenDetails = get(response, '_source.enrollment_token', { + const tokenDetails = get(response, '_source.enrollment_token', { expires_on: '0', token: null, - }); + }) as TokenEnrollmentData; // Elasticsearch might return fast if the token is not found. OR it might return fast // if the token *is* found. Either way, an attacker could using a timing attack to figure diff --git a/x-pack/package.json b/x-pack/package.json index 0a8bc6f1e6f58..b721cb2fc563a 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -81,7 +81,7 @@ "@types/jsdom": "^16.2.3", "@types/json-stable-stringify": "^1.0.32", "@types/jsonwebtoken": "^7.2.8", - "@types/lodash": "^3.10.1", + "@types/lodash": "^4.14.155", "@types/mapbox-gl": "^1.9.1", "@types/memoize-one": "^4.1.0", "@types/mime": "^2.0.1", @@ -281,11 +281,7 @@ "json-stable-stringify": "^1.0.1", "jsonwebtoken": "^8.5.1", "jsts": "^1.6.2", - "lodash": "npm:@elastic/lodash@3.10.1-kibana4", - "lodash.keyby": "^4.6.0", - "lodash.mean": "^4.1.0", - "lodash.topath": "^4.5.2", - "lodash.uniqby": "^4.7.0", + "lodash": "^4.17.15", "lz-string": "^1.4.4", "mapbox-gl": "^1.10.0", "mapbox-gl-draw-rectangle-mode": "^1.0.4", diff --git a/x-pack/plugins/actions/server/builtin_action_types/case/utils.ts b/x-pack/plugins/actions/server/builtin_action_types/case/utils.ts index dd8d971b7df44..2d81c2bf4e15f 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/case/utils.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/case/utils.ts @@ -26,7 +26,7 @@ import { ExecutorSubActionPushParams, } from './types'; -import { transformers, Transformer } from './transformers'; +import { transformers } from './transformers'; import { SUPPORTED_SOURCE_FIELDS } from './constants'; @@ -205,7 +205,7 @@ export const transformFields = ({ currentIncident, }: TransformFieldsArgs): Record => { return fields.reduce((prev, cur) => { - const transform = flow(...cur.pipes.map((p) => transformers[p])); + const transform = flow(...cur.pipes.map((p) => transformers[p])); return { ...prev, [cur.key]: transform({ @@ -228,7 +228,7 @@ export const transformFields = ({ export const transformComments = (comments: Comment[], pipes: string[]): Comment[] => { return comments.map((c) => ({ ...c, - comment: flow(...pipes.map((p) => transformers[p]))({ + comment: flow(...pipes.map((p) => transformers[p]))({ value: c.comment, date: c.updatedAt ?? c.createdAt, user: diff --git a/x-pack/plugins/actions/server/usage/actions_usage_collector.ts b/x-pack/plugins/actions/server/usage/actions_usage_collector.ts index 5dff062922200..aa546e08ea1ba 100644 --- a/x-pack/plugins/actions/server/usage/actions_usage_collector.ts +++ b/x-pack/plugins/actions/server/usage/actions_usage_collector.ts @@ -20,7 +20,7 @@ export function createActionsUsageCollector( try { const doc = await getLatestTaskState(await taskManager); // get the accumulated state from the recurring task - const state: ActionsUsage = get(doc, 'state'); + const state: ActionsUsage = get(doc, 'state') as ActionsUsage; return { ...state, diff --git a/x-pack/plugins/alerts/server/alerts_client.ts b/x-pack/plugins/alerts/server/alerts_client.ts index 6b091a5a4503b..e8e6f82f13882 100644 --- a/x-pack/plugins/alerts/server/alerts_client.ts +++ b/x-pack/plugins/alerts/server/alerts_client.ts @@ -5,7 +5,7 @@ */ import Boom from 'boom'; -import { omit, isEqual, pluck } from 'lodash'; +import { omit, isEqual, map } from 'lodash'; import { i18n } from '@kbn/i18n'; import { Logger, @@ -647,7 +647,7 @@ export class AlertsClient { private validateActions(alertType: AlertType, actions: NormalizedAlertAction[]): void { const { actionGroups: alertTypeActionGroups } = alertType; const usedAlertActionGroups = actions.map((action) => action.group); - const availableAlertTypeActionGroups = new Set(pluck(alertTypeActionGroups, 'id')); + const availableAlertTypeActionGroups = new Set(map(alertTypeActionGroups, 'id')); const invalidActionGroups = usedAlertActionGroups.filter( (group) => !availableAlertTypeActionGroups.has(group) ); diff --git a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts index 8d859a570ba91..e1e1568d2f13c 100644 --- a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts +++ b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { pluck } from 'lodash'; +import { map } from 'lodash'; import { AlertAction, State, Context, AlertType } from '../types'; import { Logger, KibanaRequest } from '../../../../../src/core/server'; import { transformActionParams } from './transform_action_params'; @@ -46,7 +46,7 @@ export function createExecutionHandler({ eventLogger, request, }: CreateExecutionHandlerOptions) { - const alertTypeActionGroups = new Set(pluck(alertType.actionGroups, 'id')); + const alertTypeActionGroups = new Set(map(alertType.actionGroups, 'id')); return async ({ actionGroup, context, state, alertInstanceId }: ExecutionHandlerOptions) => { if (!alertTypeActionGroups.has(actionGroup)) { logger.error(`Invalid action group "${actionGroup}" for alert "${alertType.id}".`); diff --git a/x-pack/plugins/alerts/server/task_runner/task_runner.ts b/x-pack/plugins/alerts/server/task_runner/task_runner.ts index 3512ab16a3712..3c66b57bb9416 100644 --- a/x-pack/plugins/alerts/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerts/server/task_runner/task_runner.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { pick, mapValues, omit, without } from 'lodash'; +import { pickBy, mapValues, omit, without } from 'lodash'; import { Logger, SavedObject, KibanaRequest } from '../../../../../src/core/server'; import { TaskRunnerContext } from './task_runner_factory'; import { ConcreteTaskInstance } from '../../../task_manager/server'; @@ -18,12 +18,11 @@ import { IntervalSchedule, Services, AlertInfoParams, - RawAlertInstance, AlertTaskState, + RawAlertInstance, } from '../types'; import { promiseResult, map, Resultable, asOk, asErr, resolveErr } from '../lib/result_type'; import { taskInstanceToAlertTaskInstance } from './alert_task_instance'; -import { AlertInstances } from '../alert_instance/alert_instance'; import { EVENT_LOG_ACTIONS } from '../plugin'; import { IEvent, IEventLogger, SAVED_OBJECT_REL_PRIMARY } from '../../../event_log/server'; import { isAlertSavedObjectNotFoundError } from '../lib/is_alert_not_found_error'; @@ -167,7 +166,7 @@ export class TaskRunner { } = this.taskInstance; const namespace = this.context.spaceIdToNamespace(spaceId); - const alertInstances = mapValues( + const alertInstances = mapValues, AlertInstance>( alertRawInstances, (rawAlertInstance) => new AlertInstance(rawAlertInstance) ); @@ -227,9 +226,8 @@ export class TaskRunner { eventLogger.logEvent(event); // Cleanup alert instances that are no longer scheduling actions to avoid over populating the alertInstances object - const instancesWithScheduledActions = pick( - alertInstances, - (alertInstance: AlertInstance) => alertInstance.hasScheduledActions() + const instancesWithScheduledActions = pickBy(alertInstances, (alertInstance: AlertInstance) => + alertInstance.hasScheduledActions() ); const currentAlertInstanceIds = Object.keys(instancesWithScheduledActions); generateNewAndResolvedInstanceEvents({ @@ -242,10 +240,7 @@ export class TaskRunner { }); if (!muteAll) { - const enabledAlertInstances = omit( - instancesWithScheduledActions, - ...mutedInstanceIds - ); + const enabledAlertInstances = omit(instancesWithScheduledActions, ...mutedInstanceIds); await Promise.all( Object.entries(enabledAlertInstances) @@ -260,7 +255,7 @@ export class TaskRunner { return { alertTypeState: updatedAlertTypeState || undefined, - alertInstances: mapValues( + alertInstances: mapValues, RawAlertInstance>( instancesWithScheduledActions, (alertInstance) => alertInstance.toRaw() ), diff --git a/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts b/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts index 64f846d13c0bf..fa4a0e40ddee5 100644 --- a/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts +++ b/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts @@ -5,7 +5,7 @@ */ import Mustache from 'mustache'; -import { isString, cloneDeep } from 'lodash'; +import { isString, cloneDeepWith } from 'lodash'; import { AlertActionParams, State, Context } from '../types'; interface TransformActionParamsOptions { @@ -29,7 +29,7 @@ export function transformActionParams({ actionParams, state, }: TransformActionParamsOptions): AlertActionParams { - const result = cloneDeep(actionParams, (value: unknown) => { + const result = cloneDeepWith(actionParams, (value: unknown) => { if (!isString(value)) return; // when the list of variables we pass in here changes, diff --git a/x-pack/plugins/alerts/server/usage/alerts_usage_collector.ts b/x-pack/plugins/alerts/server/usage/alerts_usage_collector.ts index 7491508ee0745..64d3ad54a2318 100644 --- a/x-pack/plugins/alerts/server/usage/alerts_usage_collector.ts +++ b/x-pack/plugins/alerts/server/usage/alerts_usage_collector.ts @@ -20,7 +20,7 @@ export function createAlertsUsageCollector( try { const doc = await getLatestTaskState(await taskManager); // get the accumulated state from the recurring task - const state: AlertsUsage = get(doc, 'state'); + const state: AlertsUsage = get(doc, 'state') as AlertsUsage; return { ...state, diff --git a/x-pack/plugins/apm/common/projections/util/merge_projection/index.ts b/x-pack/plugins/apm/common/projections/util/merge_projection/index.ts index f3ae0752b908e..9dc1c815bf169 100644 --- a/x-pack/plugins/apm/common/projections/util/merge_projection/index.ts +++ b/x-pack/plugins/apm/common/projections/util/merge_projection/index.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { merge, isPlainObject, cloneDeep } from 'lodash'; +import { mergeWith, isPlainObject, cloneDeep } from 'lodash'; import { DeepPartial } from 'utility-types'; import { AggregationInputMap } from '../../../../typings/elasticsearch/aggregations'; import { @@ -35,7 +35,7 @@ export function mergeProjection< T extends Projection, U extends SourceProjection >(target: T, source: U): DeepMerge { - return merge({}, cloneDeep(target), source, (a, b) => { + return mergeWith({}, cloneDeep(target), source, (a, b) => { if (isPlainObject(a) && isPlainObject(b)) { return undefined; } diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx index 7ee8dfa496b57..4e1af6e0dc239 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx @@ -65,7 +65,7 @@ interface Props { function getCurrentTab( tabs: ErrorTab[] = [], currentTabKey: string | undefined -) { +): ErrorTab | {} { const selectedTab = tabs.find(({ key }) => key === currentTabKey); return selectedTab ? selectedTab : first(tabs) || {}; } @@ -78,7 +78,7 @@ export function DetailView({ errorGroup, urlParams, location }: Props) { } const tabs = getTabs(error); - const currentTab = getCurrentTab(tabs, urlParams.detailTab); + const currentTab = getCurrentTab(tabs, urlParams.detailTab) as ErrorTab; const errorUrl = error.error.page?.url || error.url?.full; 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 d71d5f2cb480d..3cd04ee032e56 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 @@ -10,7 +10,7 @@ import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; import d3 from 'd3'; import { scaleUtc } from 'd3-scale'; -import mean from 'lodash.mean'; +import { mean } from 'lodash'; import React from 'react'; import { asRelativeDateTimeRange } from '../../../../utils/formatters'; import { getTimezoneOffsetInMs } from '../../../shared/charts/CustomPlot/getTimezoneOffsetInMs'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/WatcherFlyout.tsx b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/WatcherFlyout.tsx index 8a3e2b1a02dac..26cff5e71b610 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/WatcherFlyout.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/WatcherFlyout.tsx @@ -26,7 +26,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { padLeft, range } from 'lodash'; +import { padStart, range } from 'lodash'; import moment from 'moment-timezone'; import React, { Component } from 'react'; import styled from 'styled-components'; @@ -288,7 +288,7 @@ export class WatcherFlyout extends Component< // Generate UTC hours for Daily Report select field const intervalHours = range(24).map((i) => { - const hour = padLeft(i.toString(), 2, '0'); + const hour = padStart(i.toString(), 2, '0'); return { value: `${hour}:00`, text: `${hour}:00 UTC` }; }); diff --git a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/__test__/createErrorGroupWatch.test.ts b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/__test__/createErrorGroupWatch.test.ts index f0bc313ab4644..054476af28de1 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/__test__/createErrorGroupWatch.test.ts +++ b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/__test__/createErrorGroupWatch.test.ts @@ -110,7 +110,7 @@ function renderMustache( if (isObject(input)) { return Object.keys(input).reduce((acc, key) => { - const value = input[key]; + const value = (input as any)[key]; return { ...acc, [key]: renderMustache(value, ctx) }; }, {}); diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx index c1bfce4cdca49..620ae6708eda0 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx @@ -12,7 +12,6 @@ import { EuiFlexGroup, EuiFlexItem, } from '@elastic/eui'; -import _ from 'lodash'; import React, { useMemo } from 'react'; import { useTransactionCharts } from '../../../hooks/useTransactionCharts'; import { useTransactionDistribution } from '../../../hooks/useTransactionDistribution'; diff --git a/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx b/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx index ef7ebe684fade..3dbb1b2faac02 100644 --- a/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx @@ -5,7 +5,7 @@ */ import { EuiBasicTable, EuiBasicTableColumn } from '@elastic/eui'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; import React, { useMemo, useCallback, ReactNode } from 'react'; import { useUrlParams } from '../../../hooks/useUrlParams'; import { history } from '../../../utils/history'; @@ -58,9 +58,8 @@ function UnoptimizedManagedTable(props: Props) { } = useUrlParams(); const renderedItems = useMemo(() => { - // TODO: Use _.orderBy once we upgrade to lodash 4+ const sortedItems = sortItems - ? sortByOrder(items, sortField, sortDirection) + ? orderBy(items, sortField, sortDirection as 'asc' | 'desc') : items; return sortedItems.slice(page * pageSize, (page + 1) * pageSize); diff --git a/x-pack/plugins/apm/public/components/shared/Stacktrace/index.tsx b/x-pack/plugins/apm/public/components/shared/Stacktrace/index.tsx index 01043f33ec7b7..b37146f3b3be5 100644 --- a/x-pack/plugins/apm/public/components/shared/Stacktrace/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/Stacktrace/index.tsx @@ -87,7 +87,7 @@ export function getGroupedStackframes(stackframes: IStackframe[]) { !stackframe.exclude_from_grouping; // append to group - if (shouldAppend) { + if (prevGroup && shouldAppend) { prevGroup.stackframes.push(stackframe); return acc; } diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts index 7f99939a0a0d0..d3a9ade3925a1 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts @@ -5,7 +5,7 @@ */ import { i18n } from '@kbn/i18n'; import { Location } from 'history'; -import { pick, isEmpty } from 'lodash'; +import { pickBy, isEmpty } from 'lodash'; import moment from 'moment'; import url from 'url'; import { Transaction } from '../../../../typings/es_schemas/ui/transaction'; @@ -63,13 +63,13 @@ export const getSections = ({ const uptimeLink = url.format({ pathname: basePath.prepend('/app/uptime'), search: `?${fromQuery( - pick( + pickBy( { dateRangeStart: urlParams.rangeFrom, dateRangeEnd: urlParams.rangeTo, search: `url.domain:"${transaction.url?.domain}"`, }, - (val: string) => !isEmpty(val) + (val) => !isEmpty(val) ) )}`, }); diff --git a/x-pack/plugins/apm/public/components/shared/charts/ErrorRateChart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/ErrorRateChart/index.tsx index 7aafa9e1fdcec..de60441f4faa0 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/ErrorRateChart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/ErrorRateChart/index.tsx @@ -6,7 +6,7 @@ import { EuiTitle } from '@elastic/eui'; import theme from '@elastic/eui/dist/eui_theme_light.json'; import { i18n } from '@kbn/i18n'; -import mean from 'lodash.mean'; +import { mean } from 'lodash'; import React, { useCallback } from 'react'; import { useChartsSync } from '../../../../hooks/useChartsSync'; import { useFetcher } from '../../../../hooks/useFetcher'; diff --git a/x-pack/plugins/apm/public/context/LoadingIndicatorContext.tsx b/x-pack/plugins/apm/public/context/LoadingIndicatorContext.tsx index a26653d3d5294..99822c0bbc5ca 100644 --- a/x-pack/plugins/apm/public/context/LoadingIndicatorContext.tsx +++ b/x-pack/plugins/apm/public/context/LoadingIndicatorContext.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { EuiPortal, EuiProgress } from '@elastic/eui'; -import { pick } from 'lodash'; +import { pickBy } from 'lodash'; import React, { Fragment, useMemo, useReducer } from 'react'; import { useDelayedVisibility } from '../components/shared/useDelayedVisibility'; @@ -26,7 +26,7 @@ function reducer(statuses: State, action: Action) { // Return an object with only the ids with `true` as their value, so that ids // that previously had `false` are removed and do not remain hanging around in // the object. - return pick( + return pickBy( { ...statuses, [action.id.toString()]: action.isLoading }, Boolean ); diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts b/x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts index 9ce993e848488..d9781400f2272 100644 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts +++ b/x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { compact, pick } from 'lodash'; +import { compact, pickBy } from 'lodash'; import datemath from '@elastic/datemath'; import { IUrlParams } from './types'; import { ProcessorEvent } from '../../../common/processor_event'; @@ -61,8 +61,8 @@ export function getPathAsArray(pathname: string = '') { return compact(pathname.split('/')); } -export function removeUndefinedProps(obj: T): Partial { - return pick(obj, (value) => value !== undefined); +export function removeUndefinedProps(obj: T): Partial { + return pickBy(obj, (value) => value !== undefined); } export function getPathParams(pathname: string = ''): PathParams { diff --git a/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts b/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts index 589199221d7a9..79ccf8dbd6f9b 100644 --- a/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts +++ b/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts @@ -5,7 +5,7 @@ */ import { i18n } from '@kbn/i18n'; -import mean from 'lodash.mean'; +import { mean } from 'lodash'; import { Theme } from '@kbn/ui-shared-deps/theme'; import { ApmFetchDataResponse, diff --git a/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap b/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap new file mode 100644 index 0000000000000..1f4a8a4367fad --- /dev/null +++ b/x-pack/plugins/apm/server/lib/service_map/__snapshots__/get_service_map_from_trace_ids.test.ts.snap @@ -0,0 +1,222 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getConnections transforms a list of paths into a list of connections filtered by service.name and environment 1`] = ` +Array [ + Object { + "destination": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + "source": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "172.18.0.6:3000", + "span.subtype": "http", + "span.type": "external", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + "source": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "postgresql", + "span.subtype": "postgresql", + "span.type": "db", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "opbeans-python:3000", + "span.subtype": "http_rb", + "span.type": "ext", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "opbeans-node:3000", + "span.subtype": "http", + "span.type": "external", + }, + "source": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "172.18.0.7:3000", + "span.subtype": "http", + "span.type": "external", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "postgresql", + "span.subtype": "postgresql", + "span.type": "db", + }, + "source": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + }, + Object { + "destination": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "postgresql", + "span.subtype": "postgresql", + "span.type": "db", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "93.184.216.34:80", + "span.subtype": "http", + "span.type": "external", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "opbeans-ruby:3000", + "span.subtype": "http_rb", + "span.type": "ext", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "redis", + "span.subtype": "redis", + "span.type": "cache", + }, + "source": Object { + "agent.name": "nodejs", + "service.environment": "production", + "service.name": "opbeans-node", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "opbeans-node:3000", + "span.subtype": "http_rb", + "span.type": "ext", + }, + "source": Object { + "agent.name": "ruby", + "service.environment": "production", + "service.name": "opbeans-ruby", + }, + }, + Object { + "destination": Object { + "span.destination.service.resource": "opbeans-ruby:3000", + "span.subtype": "http", + "span.type": "external", + }, + "source": Object { + "agent.name": "python", + "service.environment": "production", + "service.name": "opbeans-python", + }, + }, +] +`; diff --git a/x-pack/plugins/apm/server/lib/service_map/fetch_service_paths_from_trace_ids.ts b/x-pack/plugins/apm/server/lib/service_map/fetch_service_paths_from_trace_ids.ts new file mode 100644 index 0000000000000..08c8aba5f0207 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/service_map/fetch_service_paths_from_trace_ids.ts @@ -0,0 +1,232 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { + PROCESSOR_EVENT, + TRACE_ID, +} from '../../../common/elasticsearch_fieldnames'; +import { + ConnectionNode, + ExternalConnectionNode, + ServiceConnectionNode, +} from '../../../common/service_map'; +import { Setup } from '../helpers/setup_request'; + +export async function fetchServicePathsFromTraceIds( + setup: Setup, + traceIds: string[] +) { + const { indices, client } = setup; + + const serviceMapParams = { + index: [ + indices['apm_oss.spanIndices'], + indices['apm_oss.transactionIndices'], + ], + body: { + size: 0, + query: { + bool: { + filter: [ + { + terms: { + [PROCESSOR_EVENT]: ['span', 'transaction'], + }, + }, + { + terms: { + [TRACE_ID]: traceIds, + }, + }, + ], + }, + }, + aggs: { + service_map: { + scripted_metric: { + init_script: { + lang: 'painless', + source: `state.eventsById = new HashMap(); + + String[] fieldsToCopy = new String[] { + 'parent.id', + 'service.name', + 'service.environment', + 'span.destination.service.resource', + 'trace.id', + 'processor.event', + 'span.type', + 'span.subtype', + 'agent.name' + }; + state.fieldsToCopy = fieldsToCopy;`, + }, + map_script: { + lang: 'painless', + source: `def id; + if (!doc['span.id'].empty) { + id = doc['span.id'].value; + } else { + id = doc['transaction.id'].value; + } + + def copy = new HashMap(); + copy.id = id; + + for(key in state.fieldsToCopy) { + if (!doc[key].empty) { + copy[key] = doc[key].value; + } + } + + state.eventsById[id] = copy`, + }, + combine_script: { + lang: 'painless', + source: `return state.eventsById;`, + }, + reduce_script: { + lang: 'painless', + source: ` + def getDestination ( def event ) { + def destination = new HashMap(); + destination['span.destination.service.resource'] = event['span.destination.service.resource']; + destination['span.type'] = event['span.type']; + destination['span.subtype'] = event['span.subtype']; + return destination; + } + + def processAndReturnEvent(def context, def eventId) { + if (context.processedEvents[eventId] != null) { + return context.processedEvents[eventId]; + } + + def event = context.eventsById[eventId]; + + if (event == null) { + return null; + } + + def service = new HashMap(); + service['service.name'] = event['service.name']; + service['service.environment'] = event['service.environment']; + service['agent.name'] = event['agent.name']; + + def basePath = new ArrayList(); + + def parentId = event['parent.id']; + def parent; + + if (parentId != null && parentId != event['id']) { + parent = processAndReturnEvent(context, parentId); + if (parent != null) { + /* copy the path from the parent */ + basePath.addAll(parent.path); + /* flag parent path for removal, as it has children */ + context.locationsToRemove.add(parent.path); + + /* if the parent has 'span.destination.service.resource' set, and the service is different, + we've discovered a service */ + + if (parent['span.destination.service.resource'] != null + && parent['span.destination.service.resource'] != "" + && (parent['service.name'] != event['service.name'] + || parent['service.environment'] != event['service.environment'] + ) + ) { + def parentDestination = getDestination(parent); + context.externalToServiceMap.put(parentDestination, service); + } + } + } + + def lastLocation = basePath.size() > 0 ? basePath[basePath.size() - 1] : null; + + def currentLocation = service; + + /* only add the current location to the path if it's different from the last one*/ + if (lastLocation == null || !lastLocation.equals(currentLocation)) { + basePath.add(currentLocation); + } + + /* if there is an outgoing span, create a new path */ + if (event['span.destination.service.resource'] != null + && event['span.destination.service.resource'] != '') { + def outgoingLocation = getDestination(event); + def outgoingPath = new ArrayList(basePath); + outgoingPath.add(outgoingLocation); + context.paths.add(outgoingPath); + } + + event.path = basePath; + + context.processedEvents[eventId] = event; + return event; + } + + def context = new HashMap(); + + context.processedEvents = new HashMap(); + context.eventsById = new HashMap(); + + context.paths = new HashSet(); + context.externalToServiceMap = new HashMap(); + context.locationsToRemove = new HashSet(); + + for (state in states) { + context.eventsById.putAll(state); + } + + for (entry in context.eventsById.entrySet()) { + processAndReturnEvent(context, entry.getKey()); + } + + def paths = new HashSet(); + + for(foundPath in context.paths) { + if (!context.locationsToRemove.contains(foundPath)) { + paths.add(foundPath); + } + } + + def response = new HashMap(); + response.paths = paths; + + def discoveredServices = new HashSet(); + + for(entry in context.externalToServiceMap.entrySet()) { + def map = new HashMap(); + map.from = entry.getKey(); + map.to = entry.getValue(); + discoveredServices.add(map); + } + response.discoveredServices = discoveredServices; + + return response;`, + }, + }, + }, + }, + }, + }; + + const serviceMapFromTraceIdsScriptResponse = await client.search( + serviceMapParams + ); + + return serviceMapFromTraceIdsScriptResponse as { + aggregations?: { + service_map: { + value: { + paths: ConnectionNode[][]; + discoveredServices: Array<{ + from: ExternalConnectionNode; + to: ServiceConnectionNode; + }>; + }; + }; + }; + }; +} diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.ts new file mode 100644 index 0000000000000..a3a7e5c995bfe --- /dev/null +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.test.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getConnections } from './get_service_map_from_trace_ids'; +import serviceMapFromTraceIdsScriptResponse from './mock_responses/get_service_map_from_trace_ids_script_response.json'; +import { PromiseReturnType } from '../../../typings/common'; +import { fetchServicePathsFromTraceIds } from './fetch_service_paths_from_trace_ids'; + +describe('getConnections', () => { + it('transforms a list of paths into a list of connections filtered by service.name and environment', () => { + const response = serviceMapFromTraceIdsScriptResponse as PromiseReturnType< + typeof fetchServicePathsFromTraceIds + >; + const serviceName = 'opbeans-node'; + const environment = 'production'; + + const connections = getConnections( + response.aggregations?.service_map.value.paths, + serviceName, + environment + ); + + expect(connections).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts index 01cbc1aa9b989..f6e331a09fa65 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map_from_trace_ids.ts @@ -3,237 +3,27 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { find, uniq } from 'lodash'; +import { find, uniqBy } from 'lodash'; import { - PROCESSOR_EVENT, SERVICE_ENVIRONMENT, SERVICE_NAME, - TRACE_ID, } from '../../../common/elasticsearch_fieldnames'; import { Connection, ConnectionNode, - ExternalConnectionNode, ServiceConnectionNode, } from '../../../common/service_map'; import { Setup } from '../helpers/setup_request'; - -export async function getServiceMapFromTraceIds({ - setup, - traceIds, - serviceName, - environment, -}: { - setup: Setup; - traceIds: string[]; - serviceName?: string; - environment?: string; -}) { - const { indices, client } = setup; - - const serviceMapParams = { - index: [ - indices['apm_oss.spanIndices'], - indices['apm_oss.transactionIndices'], - ], - body: { - size: 0, - query: { - bool: { - filter: [ - { - terms: { - [PROCESSOR_EVENT]: ['span', 'transaction'], - }, - }, - { - terms: { - [TRACE_ID]: traceIds, - }, - }, - ], - }, - }, - aggs: { - service_map: { - scripted_metric: { - init_script: { - lang: 'painless', - source: `state.eventsById = new HashMap(); - - String[] fieldsToCopy = new String[] { - 'parent.id', - 'service.name', - 'service.environment', - 'span.destination.service.resource', - 'trace.id', - 'processor.event', - 'span.type', - 'span.subtype', - 'agent.name' - }; - state.fieldsToCopy = fieldsToCopy;`, - }, - map_script: { - lang: 'painless', - source: `def id; - if (!doc['span.id'].empty) { - id = doc['span.id'].value; - } else { - id = doc['transaction.id'].value; - } - - def copy = new HashMap(); - copy.id = id; - - for(key in state.fieldsToCopy) { - if (!doc[key].empty) { - copy[key] = doc[key].value; - } - } - - state.eventsById[id] = copy`, - }, - combine_script: { - lang: 'painless', - source: `return state.eventsById;`, - }, - reduce_script: { - lang: 'painless', - source: ` - def getDestination ( def event ) { - def destination = new HashMap(); - destination['span.destination.service.resource'] = event['span.destination.service.resource']; - destination['span.type'] = event['span.type']; - destination['span.subtype'] = event['span.subtype']; - return destination; - } - - def processAndReturnEvent(def context, def eventId) { - if (context.processedEvents[eventId] != null) { - return context.processedEvents[eventId]; - } - - def event = context.eventsById[eventId]; - - if (event == null) { - return null; - } - - def service = new HashMap(); - service['service.name'] = event['service.name']; - service['service.environment'] = event['service.environment']; - service['agent.name'] = event['agent.name']; - - def basePath = new ArrayList(); - - def parentId = event['parent.id']; - def parent; - - if (parentId != null && parentId != event['id']) { - parent = processAndReturnEvent(context, parentId); - if (parent != null) { - /* copy the path from the parent */ - basePath.addAll(parent.path); - /* flag parent path for removal, as it has children */ - context.locationsToRemove.add(parent.path); - - /* if the parent has 'span.destination.service.resource' set, and the service is different, - we've discovered a service */ - - if (parent['span.destination.service.resource'] != null - && parent['span.destination.service.resource'] != "" - && (parent['service.name'] != event['service.name'] - || parent['service.environment'] != event['service.environment'] - ) - ) { - def parentDestination = getDestination(parent); - context.externalToServiceMap.put(parentDestination, service); - } - } - } - - def lastLocation = basePath.size() > 0 ? basePath[basePath.size() - 1] : null; - - def currentLocation = service; - - /* only add the current location to the path if it's different from the last one*/ - if (lastLocation == null || !lastLocation.equals(currentLocation)) { - basePath.add(currentLocation); - } - - /* if there is an outgoing span, create a new path */ - if (event['span.destination.service.resource'] != null - && event['span.destination.service.resource'] != '') { - def outgoingLocation = getDestination(event); - def outgoingPath = new ArrayList(basePath); - outgoingPath.add(outgoingLocation); - context.paths.add(outgoingPath); - } - - event.path = basePath; - - context.processedEvents[eventId] = event; - return event; - } - - def context = new HashMap(); - - context.processedEvents = new HashMap(); - context.eventsById = new HashMap(); - - context.paths = new HashSet(); - context.externalToServiceMap = new HashMap(); - context.locationsToRemove = new HashSet(); - - for (state in states) { - context.eventsById.putAll(state); - } - - for (entry in context.eventsById.entrySet()) { - processAndReturnEvent(context, entry.getKey()); - } - - def paths = new HashSet(); - - for(foundPath in context.paths) { - if (!context.locationsToRemove.contains(foundPath)) { - paths.add(foundPath); - } - } - - def response = new HashMap(); - response.paths = paths; - - def discoveredServices = new HashSet(); - - for(entry in context.externalToServiceMap.entrySet()) { - def map = new HashMap(); - map.from = entry.getKey(); - map.to = entry.getValue(); - discoveredServices.add(map); - } - response.discoveredServices = discoveredServices; - - return response;`, - }, - }, - }, - }, - }, - }; - - const serviceMapResponse = await client.search(serviceMapParams); - - const scriptResponse = serviceMapResponse.aggregations?.service_map.value as { - paths: ConnectionNode[][]; - discoveredServices: Array<{ - from: ExternalConnectionNode; - to: ServiceConnectionNode; - }>; - }; - - let paths = scriptResponse.paths; +import { fetchServicePathsFromTraceIds } from './fetch_service_paths_from_trace_ids'; + +export function getConnections( + paths?: ConnectionNode[][], + serviceName?: string, + environment?: string +) { + if (!paths) { + return []; + } if (serviceName || environment) { paths = paths.filter((path) => { @@ -257,26 +47,51 @@ export async function getServiceMapFromTraceIds({ }); } - const connections = uniq( - paths.flatMap((path) => { - return path.reduce((conns, location, index) => { - const prev = path[index - 1]; - if (prev) { - return conns.concat({ - source: prev, - destination: location, - }); - } - return conns; - }, [] as Connection[]); - }, [] as Connection[]), - (value, _index, array) => { - return find(array, value); - } + const connectionsArr = paths.flatMap((path) => { + return path.reduce((conns, location, index) => { + const prev = path[index - 1]; + if (prev) { + return conns.concat({ + source: prev, + destination: location, + }); + } + return conns; + }, [] as Connection[]); + }, [] as Connection[]); + + const connections = uniqBy(connectionsArr, (value) => + find(connectionsArr, value) ); + return connections; +} + +export async function getServiceMapFromTraceIds({ + setup, + traceIds, + serviceName, + environment, +}: { + setup: Setup; + traceIds: string[]; + serviceName?: string; + environment?: string; +}) { + const serviceMapFromTraceIdsScriptResponse = await fetchServicePathsFromTraceIds( + setup, + traceIds + ); + + const serviceMapScriptedAggValue = + serviceMapFromTraceIdsScriptResponse.aggregations?.service_map.value; + return { - connections, - discoveredServices: scriptResponse.discoveredServices, + connections: getConnections( + serviceMapScriptedAggValue?.paths, + serviceName, + environment + ), + discoveredServices: serviceMapScriptedAggValue?.discoveredServices ?? [], }; } diff --git a/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json b/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json new file mode 100644 index 0000000000000..49d8efebbf43b --- /dev/null +++ b/x-pack/plugins/apm/server/lib/service_map/mock_responses/get_service_map_from_trace_ids_script_response.json @@ -0,0 +1,1165 @@ +{ + "took": 43, + "timed_out": false, + "_shards": { "total": 6, "successful": 6, "skipped": 0, "failed": 0 }, + "hits": { + "total": { "value": 465, "relation": "eq" }, + "max_score": null, + "hits": [] + }, + "aggregations": { + "service_map": { + "value": { + "paths": [ + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.6:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.6:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.7:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.7:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.7:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "93.184.216.34:80", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.7:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "postgresql", + "span.destination.service.resource": "postgresql", + "span.type": "db" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.6:3000", + "span.type": "external" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + }, + { + "span.subtype": "redis", + "span.destination.service.resource": "redis", + "span.type": "cache" + } + ], + [ + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + }, + { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + }, + { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + } + ] + ], + "discoveredServices": [ + { + "from": { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "external" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + } + }, + { + "from": { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.7:3000", + "span.type": "external" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + } + }, + { + "from": { + "span.subtype": "http", + "span.destination.service.resource": "opbeans-ruby:3000", + "span.type": "external" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-ruby", + "agent.name": "ruby" + } + }, + { + "from": { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-node:3000", + "span.type": "ext" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-node", + "agent.name": "nodejs" + } + }, + { + "from": { + "span.subtype": "http_rb", + "span.destination.service.resource": "opbeans-python:3000", + "span.type": "ext" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + } + }, + { + "from": { + "span.subtype": "http", + "span.destination.service.resource": "172.18.0.6:3000", + "span.type": "external" + }, + "to": { + "service.environment": "production", + "service.name": "opbeans-python", + "agent.name": "python" + } + } + ] + } + } + } +} diff --git a/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts index 835c00b8df239..2e394f44b25b1 100644 --- a/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts +++ b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { sortBy, pick, identity } from 'lodash'; +import { sortBy, pickBy, identity } from 'lodash'; import { ValuesType } from 'utility-types'; import { SERVICE_NAME, @@ -112,7 +112,7 @@ export function transformServiceMapResponses(response: ServiceMapResponse) { id: matchedServiceNodes[0][SERVICE_NAME], }, ...matchedServiceNodes.map((serviceNode) => - pick(serviceNode, identity) + pickBy(serviceNode, identity) ) ), }; diff --git a/x-pack/plugins/apm/server/lib/transaction_groups/transform.ts b/x-pack/plugins/apm/server/lib/transaction_groups/transform.ts index 81dba39e9d712..b04ff6764675d 100644 --- a/x-pack/plugins/apm/server/lib/transaction_groups/transform.ts +++ b/x-pack/plugins/apm/server/lib/transaction_groups/transform.ts @@ -5,7 +5,7 @@ */ import moment from 'moment'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; import { ESResponse } from './fetcher'; function calculateRelativeImpacts(items: ITransactionGroup[]) { @@ -27,7 +27,7 @@ function calculateRelativeImpacts(items: ITransactionGroup[]) { const getBuckets = (response: ESResponse) => { if (response.aggregations) { - return sortByOrder( + return orderBy( response.aggregations.transaction_groups.buckets, ['sum.value'], ['desc'] diff --git a/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts b/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts index 5af8b9f78cec1..3c48c14c2a471 100644 --- a/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts +++ b/x-pack/plugins/apm/server/lib/transactions/breakdown/index.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { flatten, sortByOrder, last } from 'lodash'; +import { flatten, orderBy, last } from 'lodash'; import { SERVICE_NAME, SPAN_SUBTYPE, @@ -138,13 +138,13 @@ export async function getTransactionBreakdown({ }; const visibleKpis = resp.aggregations - ? sortByOrder(formatBucket(resp.aggregations), 'percentage', 'desc').slice( + ? orderBy(formatBucket(resp.aggregations), 'percentage', 'desc').slice( 0, MAX_KPIS ) : []; - const kpis = sortByOrder(visibleKpis, 'name').map((kpi, index) => { + const kpis = orderBy(visibleKpis, 'name').map((kpi, index) => { return { ...kpi, color: getVizColorForIndex(index), @@ -186,8 +186,8 @@ export async function getTransactionBreakdown({ // is drawn correctly. // If we set all values to 0, the chart always displays null values as 0, // and the chart looks weird. - const hasAnyValues = lastValues.some((value) => value.y !== null); - const hasNullValues = lastValues.some((value) => value.y === null); + const hasAnyValues = lastValues.some((value) => value?.y !== null); + const hasNullValues = lastValues.some((value) => value?.y === null); if (hasAnyValues && hasNullValues) { Object.values(updatedSeries).forEach((series) => { diff --git a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts index 31bc0563ec13f..588d5c7896db9 100644 --- a/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts +++ b/x-pack/plugins/apm/server/lib/ui_filters/local_ui_filters/index.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { cloneDeep, sortByOrder } from 'lodash'; +import { cloneDeep, orderBy } from 'lodash'; import { UIFilters } from '../../../../typings/ui_filters'; import { Projection } from '../../../../common/projections/typings'; import { PromiseReturnType } from '../../../../../observability/typings/common'; @@ -47,7 +47,7 @@ export async function getLocalUIFilters({ return { ...filter, - options: sortByOrder( + options: orderBy( buckets.map((bucket) => { return { name: bucket.key as string, diff --git a/x-pack/plugins/apm/server/routes/create_api/index.ts b/x-pack/plugins/apm/server/routes/create_api/index.ts index b21f0ea8d32db..92f52dd1552d6 100644 --- a/x-pack/plugins/apm/server/routes/create_api/index.ts +++ b/x-pack/plugins/apm/server/routes/create_api/index.ts @@ -140,6 +140,7 @@ export function createApi() { // Only return values for parameters that have runtime types, // but always include query as _debug is always set even if // it's not defined in the route. + // @ts-ignore params: pick(parsedParams, ...Object.keys(params), 'query'), config, logger, diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 08eba00251e26..74ab717b8de59 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -6,7 +6,7 @@ import * as t from 'io-ts'; import Boom from 'boom'; -import { unique } from 'lodash'; +import { uniq } from 'lodash'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceAgentName } from '../lib/services/get_service_agent_name'; import { getServices } from '../lib/services/get_services'; @@ -160,7 +160,7 @@ export const serviceAnnotationsCreateRoute = createRoute(() => ({ ...body.service, name: path.serviceName, }, - tags: unique(['apm'].concat(body.tags ?? [])), + tags: uniq(['apm'].concat(body.tags ?? [])), }); }, })); diff --git a/x-pack/plugins/apm/typings/lodash.mean.d.ts b/x-pack/plugins/apm/typings/lodash.mean.d.ts deleted file mode 100644 index 0b9ca3f6914cb..0000000000000 --- a/x-pack/plugins/apm/typings/lodash.mean.d.ts +++ /dev/null @@ -1,10 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -declare module 'lodash.mean' { - function mean(numbers: Array): number; - export = mean; -} diff --git a/x-pack/plugins/beats_management/public/components/enroll_beats.tsx b/x-pack/plugins/beats_management/public/components/enroll_beats.tsx index e609cd83587ce..5bf0f51f48355 100644 --- a/x-pack/plugins/beats_management/public/components/enroll_beats.tsx +++ b/x-pack/plugins/beats_management/public/components/enroll_beats.tsx @@ -18,7 +18,7 @@ import { EuiTitle, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import React from 'react'; import { CMBeat } from '../../../../legacy/plugins/beats_management/common/domain_types'; @@ -93,7 +93,7 @@ export class EnrollBeat extends React.Component } const cmdText = `${this.state.command .replace('{{beatType}}', this.state.beatType) - .replace('{{beatTypeInCaps}}', capitalize(this.state.beatType))} enroll ${ + .replace('{{beatTypeInCaps}}', upperFirst(this.state.beatType))} enroll ${ window.location.protocol }//${window.location.host}${this.props.frameworkBasePath} ${this.props.enrollmentToken}`; @@ -183,7 +183,7 @@ export class EnrollBeat extends React.Component id="xpack.beatsManagement.enrollBeat.yourBeatTypeHostTitle" defaultMessage="On the host where your {beatType} is installed, run:" values={{ - beatType: capitalize(this.state.beatType), + beatType: upperFirst(this.state.beatType), }} /> @@ -220,7 +220,7 @@ export class EnrollBeat extends React.Component id="xpack.beatsManagement.enrollBeat.waitingBeatTypeToEnrollTitle" defaultMessage="Waiting for {beatType} to enroll…" values={{ - beatType: capitalize(this.state.beatType), + beatType: upperFirst(this.state.beatType), }} /> diff --git a/x-pack/plugins/beats_management/public/components/navigation/connected_link.tsx b/x-pack/plugins/beats_management/public/components/navigation/connected_link.tsx index 947e22ee29089..ebac34afa016b 100644 --- a/x-pack/plugins/beats_management/public/components/navigation/connected_link.tsx +++ b/x-pack/plugins/beats_management/public/components/navigation/connected_link.tsx @@ -3,6 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ + +import _ from 'lodash'; import React from 'react'; import { EuiLink } from '@elastic/eui'; diff --git a/x-pack/plugins/beats_management/public/components/table/table_type_configs.tsx b/x-pack/plugins/beats_management/public/components/table/table_type_configs.tsx index 94e4ca46aec19..6bbf269711fbd 100644 --- a/x-pack/plugins/beats_management/public/components/table/table_type_configs.tsx +++ b/x-pack/plugins/beats_management/public/components/table/table_type_configs.tsx @@ -6,7 +6,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiToolTip, IconColor } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { sortBy, uniq } from 'lodash'; +import { sortBy, uniqBy } from 'lodash'; import moment from 'moment'; import React from 'react'; import { @@ -226,7 +226,7 @@ export const BeatsTableType: TableType = { // render: (tags?: BeatTag[]) => // tags && tags.length ? ( // - // {moment(first(sortByOrder(tags, ['last_updated'], ['desc'])).last_updated).fromNow()} + // {moment(first(orderBy(tags, ['last_updated'], ['desc'])).last_updated).fromNow()} // // ) : null, // sortable: true, @@ -249,7 +249,7 @@ export const BeatsTableType: TableType = { name: i18n.translate('xpack.beatsManagement.beatsTable.typeLabel', { defaultMessage: 'Type', }), - options: uniq( + options: uniqBy( data.map(({ type }: { type: any }) => ({ value: type })), 'value' ), diff --git a/x-pack/plugins/beats_management/public/lib/adapters/beats/memory_beats_adapter.ts b/x-pack/plugins/beats_management/public/lib/adapters/beats/memory_beats_adapter.ts index 8e3f58b18f391..24a7e5c3af8fa 100644 --- a/x-pack/plugins/beats_management/public/lib/adapters/beats/memory_beats_adapter.ts +++ b/x-pack/plugins/beats_management/public/lib/adapters/beats/memory_beats_adapter.ts @@ -32,14 +32,14 @@ export class MemoryBeatsAdapter implements CMBeatsAdapter { } public async getAll() { - return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])); + return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[]; } public async getBeatsWithTag(tagId: string): Promise { - return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])); + return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[]; } public async getBeatWithToken(enrollmentToken: string): Promise { - return this.beatsDB.map((beat: any) => omit(beat, ['access_token']))[0]; + return this.beatsDB.map((beat: any) => omit(beat, ['access_token']))[0] as CMBeat | null; } public async removeTagsFromBeats( removals: BeatsTagAssignment[] @@ -66,11 +66,11 @@ export class MemoryBeatsAdapter implements CMBeatsAdapter { return beat; }); - return response.map((item: CMBeat, resultIdx: number) => ({ + return response.map((item: CMBeat, resultIdx: number) => ({ idxInRequest: removals[resultIdx].idxInRequest, result: 'updated', status: 200, - })); + })) as any; } public async assignTagsToBeats( diff --git a/x-pack/plugins/beats_management/public/lib/framework.ts b/x-pack/plugins/beats_management/public/lib/framework.ts index 9e4271c683415..63a81e0895348 100644 --- a/x-pack/plugins/beats_management/public/lib/framework.ts +++ b/x-pack/plugins/beats_management/public/lib/framework.ts @@ -58,6 +58,6 @@ export class FrameworkLib { public currentUserHasOneOfRoles(roles: string[]) { // If the user has at least one of the roles requested, the returnd difference will be less // then the orig array size. difference only compares based on the left side arg - return difference(roles, get(this.currentUser, 'roles', [])).length < roles.length; + return difference(roles, get(this.currentUser, 'roles', []) as string[]).length < roles.length; } } diff --git a/x-pack/plugins/canvas/.storybook/webpack.dll.config.js b/x-pack/plugins/canvas/.storybook/webpack.dll.config.js index 0a648e861b386..5fdc4519f3bd7 100644 --- a/x-pack/plugins/canvas/.storybook/webpack.dll.config.js +++ b/x-pack/plugins/canvas/.storybook/webpack.dll.config.js @@ -39,7 +39,6 @@ module.exports = { 'highlight.js', 'html-entities', 'jquery', - 'lodash.clone', 'lodash', 'markdown-it', 'mocha', diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/pie.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/pie.ts index b568f18924869..c32c553fffc1b 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/pie.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/pie.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, map, groupBy } from 'lodash'; -// @ts-expect-error lodash.keyby imports invalid member from @types/lodash -import keyBy from 'lodash.keyby'; +import { get, keyBy, map, groupBy } from 'lodash'; // @ts-expect-error untyped local import { getColorsFromPalette } from '../../../common/lib/get_colors_from_palette'; // @ts-expect-error untyped local diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/get_tick_hash.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/get_tick_hash.ts index 4839db047c871..21166454e478f 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/get_tick_hash.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/get_tick_hash.ts @@ -20,11 +20,13 @@ export const getTickHash = (columns: PointSeriesColumns, rows: DatatableRow[]) = }; if (get(columns, 'x.type') === 'string') { - sortBy(rows, ['x']).forEach((row) => { - if (!ticks.x.hash[row.x]) { - ticks.x.hash[row.x] = ticks.x.counter++; - } - }); + sortBy(rows, ['x']) + .reverse() + .forEach((row) => { + if (!ticks.x.hash[row.x]) { + ticks.x.hash[row.x] = ticks.x.counter++; + } + }); } if (get(columns, 'y.type') === 'string') { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/index.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/index.ts index 0b4583f4581ae..4ffd2ff3e0c96 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/index.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/index.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// @ts-expect-error no @typed def -import keyBy from 'lodash.keyby'; -import { groupBy, get, set, map, sortBy } from 'lodash'; +import { groupBy, get, keyBy, set, map, sortBy } from 'lodash'; import { ExpressionFunctionDefinition, Style } from 'src/plugins/expressions'; // @ts-expect-error untyped local import { getColorsFromPalette } from '../../../../common/lib/get_colors_from_palette'; diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/series_style_to_flot.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/series_style_to_flot.ts index 6fbaee8736a50..e4b710240de19 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/series_style_to_flot.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/plot/series_style_to_flot.ts @@ -12,12 +12,12 @@ export const seriesStyleToFlot = (seriesStyle: SeriesStyle) => { return {}; } - const lines = get(seriesStyle, 'lines'); - const bars = get(seriesStyle, 'bars'); - const fill = get(seriesStyle, 'fill'); - const color = get(seriesStyle, 'color'); - const stack = get(seriesStyle, 'stack'); - const horizontal = get(seriesStyle, 'horizontalBars', false); + const lines = get(seriesStyle, 'lines'); + const bars = get(seriesStyle, 'bars'); + const fill = get(seriesStyle, 'fill'); + const color = get(seriesStyle, 'color'); + const stack = get(seriesStyle, 'stack'); + const horizontal = get(seriesStyle, 'horizontalBars', false); const flotStyle = { numbers: { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts index bae80d3c33510..f79f189f363d4 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts @@ -4,11 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -// @ts-expect-error untyped library -import uniqBy from 'lodash.uniqby'; -// @ts-expect-error untyped Elastic library +// @ts-expect-error Untyped Elastic library import { evaluate } from 'tinymath'; -import { groupBy, zipObject, omit } from 'lodash'; +import { groupBy, zipObject, omit, uniqBy } from 'lodash'; import moment from 'moment'; import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/time_filter/components/time_filter.tsx b/x-pack/plugins/canvas/canvas_plugin_src/renderers/time_filter/components/time_filter.tsx index 8d28287b32066..487f17fb89d12 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/time_filter/components/time_filter.tsx +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/time_filter/components/time_filter.tsx @@ -34,9 +34,9 @@ export interface FilterMeta { function getFilterMeta(filter: string): FilterMeta { const ast = fromExpression(filter); - const column = get(ast, 'chain[0].arguments.column[0]'); - const start = get(ast, 'chain[0].arguments.from[0]'); - const end = get(ast, 'chain[0].arguments.to[0]'); + const column = get(ast, 'chain[0].arguments.column[0]') as string; + const start = get(ast, 'chain[0].arguments.from[0]') as string; + const end = get(ast, 'chain[0].arguments.to[0]') as string; return { column, start, end }; } diff --git a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/palette.tsx b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/palette.tsx index a33d000a1f656..8ae61f7197ee8 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/palette.tsx +++ b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/palette.tsx @@ -40,7 +40,7 @@ export const PaletteArgInput: FC = ({ onValueChange, argId, argValue, ren return astObj; }) as string[]; - const gradient = get(chain[0].arguments.gradient, '[0]'); + const gradient = get(chain[0].arguments.gradient, '[0]') as boolean; const palette = identifyPalette({ colors, gradient }); if (palette) { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/uis/views/plot.js b/x-pack/plugins/canvas/canvas_plugin_src/uis/views/plot.js index 1449bddf322b5..05ecf467a1d35 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/uis/views/plot.js +++ b/x-pack/plugins/canvas/canvas_plugin_src/uis/views/plot.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { map, uniq } from 'lodash'; +import { map, uniqBy } from 'lodash'; import { getState, getValue } from '../../../public/lib/resolved_arg'; import { legendOptions } from '../../../public/lib/legend_options'; import { ViewStrings } from '../../../i18n'; @@ -72,6 +72,6 @@ export const plot = () => ({ if (getState(context) !== 'ready') { return { labels: [] }; } - return { labels: uniq(map(getValue(context).rows, 'color').filter((v) => v !== undefined)) }; + return { labels: uniqBy(map(getValue(context).rows, 'color').filter((v) => v !== undefined)) }; }, }); diff --git a/x-pack/plugins/canvas/common/lib/pivot_object_array.ts b/x-pack/plugins/canvas/common/lib/pivot_object_array.ts index c098b7772ef11..2bc52fb0eaafc 100644 --- a/x-pack/plugins/canvas/common/lib/pivot_object_array.ts +++ b/x-pack/plugins/canvas/common/lib/pivot_object_array.ts @@ -11,10 +11,7 @@ const isString = (val: any): boolean => typeof val === 'string'; export function pivotObjectArray< RowType extends { [key: string]: any }, ReturnColumns extends string | number | symbol = keyof RowType ->( - rows: RowType[], - columns?: string[] -): { [Column in ReturnColumns]: Column extends keyof RowType ? Array : never } { +>(rows: RowType[], columns?: string[]): Record { const columnNames = columns || Object.keys(rows[0]); if (!columnNames.every(isString)) { throw new Error('Columns should be an array of strings'); diff --git a/x-pack/plugins/canvas/public/components/enhance/error_boundary.tsx b/x-pack/plugins/canvas/public/components/enhance/error_boundary.tsx index 134efe61c9dcb..c0ed14965cbd3 100644 --- a/x-pack/plugins/canvas/public/components/enhance/error_boundary.tsx +++ b/x-pack/plugins/canvas/public/components/enhance/error_boundary.tsx @@ -4,38 +4,27 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, FunctionComponent, ReactChildren } from 'react'; +import React, { ErrorInfo, FC, ReactElement } from 'react'; import { withState, withHandlers, lifecycle, mapProps, compose } from 'recompose'; import PropTypes from 'prop-types'; import { omit } from 'lodash'; -type ResetErrorState = ({ - setError, - setErrorInfo, -}: { - setError: Function; - setErrorInfo: Function; -}) => void; - interface Props { - error: Error; - errorInfo: any; - resetErrorState: ResetErrorState; + error?: Error; + errorInfo?: ErrorInfo; + resetErrorState: (state: { error: Error; errorInfo: ErrorInfo }) => void; + setError: (error: Error | null) => void; + setErrorInfo: (info: ErrorInfo | null) => void; + children: (props: ChildrenProps) => ReactElement | null; } -interface ComponentProps extends Props { - children: (props: Props) => ReactChildren; -} +type ComponentProps = Pick; +type ChildrenProps = Omit; -const ErrorBoundaryComponent: FunctionComponent = (props) => ( - - {props.children({ - error: props.error, - errorInfo: props.errorInfo, - resetErrorState: props.resetErrorState, - })} - -); +const ErrorBoundaryComponent: FC = (props) => { + const { children, ...rest } = props; + return <>{children(rest)}; +}; ErrorBoundaryComponent.propTypes = { children: PropTypes.func.isRequired, @@ -44,33 +33,22 @@ ErrorBoundaryComponent.propTypes = { resetErrorState: PropTypes.func.isRequired, }; -interface HOCProps { - setError: Function; - setErrorInfo: Function; -} - -interface HandlerProps { - resetErrorState: ResetErrorState; -} - -export const errorBoundaryHoc = compose( +export const errorBoundaryHoc = compose>( withState('error', 'setError', null), withState('errorInfo', 'setErrorInfo', null), - withHandlers({ + withHandlers, Pick>({ resetErrorState: ({ setError, setErrorInfo }) => () => { setError(null); setErrorInfo(null); }, }), - lifecycle({ + lifecycle({ componentDidCatch(error, errorInfo) { this.props.setError(error); this.props.setErrorInfo(errorInfo); }, }), - mapProps>((props) => - omit(props, ['setError', 'setErrorInfo']) - ) + mapProps((props) => omit(props, ['setError', 'setErrorInfo'])) ); export const ErrorBoundary = errorBoundaryHoc(ErrorBoundaryComponent); diff --git a/x-pack/plugins/canvas/public/components/function_form/function_form.js b/x-pack/plugins/canvas/public/components/function_form/function_form.js index 8c9f8847d8eed..062f782942a82 100644 --- a/x-pack/plugins/canvas/public/components/function_form/function_form.js +++ b/x-pack/plugins/canvas/public/components/function_form/function_form.js @@ -32,7 +32,6 @@ const branches = [ export const FunctionForm = compose(...branches)(FunctionFormComponent); FunctionForm.propTypes = { - expressionType: PropTypes.object, context: PropTypes.object, expressionType: PropTypes.object, }; diff --git a/x-pack/plugins/canvas/public/components/item_grid/item_grid.tsx b/x-pack/plugins/canvas/public/components/item_grid/item_grid.tsx index 234f505071669..b9c879a27fd9c 100644 --- a/x-pack/plugins/canvas/public/components/item_grid/item_grid.tsx +++ b/x-pack/plugins/canvas/public/components/item_grid/item_grid.tsx @@ -19,13 +19,13 @@ export interface Props { */ itemsPerRow?: number; /** A function with which to iterate upon the items collection, producing nodes. */ - children: (item: T) => ReactElement; + children: (item: T) => ReactElement; } // We need this type in order to define propTypes on the object. It's a bit redundant, // but TS needs to know that ItemGrid can have propTypes defined on it. interface ItemGridType { - (props: Props): ReactElement; + (props: Props): ReactElement; propTypes?: ValidationMap>; } @@ -35,16 +35,22 @@ export const ItemGrid: ItemGridType = function ItemGridFunc({ children, }: Props) { const reducedRows = items.reduce( - (rows: Array>>, item: any) => { - if (last(rows).length >= itemsPerRow) { + (rows: ReactElement[][], item: T) => { + let end = last(rows); + + if (end && end.length >= itemsPerRow) { rows.push([]); } - last(rows).push(children(item)); + end = last(rows); + + if (end) { + end.push(children(item)); + } return rows; }, - [[]] as Array>> + [[]] as ReactElement[][] ); return ( diff --git a/x-pack/plugins/canvas/public/components/workpad_config/index.ts b/x-pack/plugins/canvas/public/components/workpad_config/index.ts index e417821fd4f67..c69a1fd9b8137 100644 --- a/x-pack/plugins/canvas/public/components/workpad_config/index.ts +++ b/x-pack/plugins/canvas/public/components/workpad_config/index.ts @@ -17,12 +17,12 @@ const mapStateToProps = (state: State) => { const workpad = getWorkpad(state); return { - name: get(workpad, 'name'), + name: get(workpad, 'name'), size: { - width: get(workpad, 'width'), - height: get(workpad, 'height'), + width: get(workpad, 'width'), + height: get(workpad, 'height'), }, - css: get(workpad, 'css', DEFAULT_WORKPAD_CSS), + css: get(workpad, 'css', DEFAULT_WORKPAD_CSS), }; }; diff --git a/x-pack/plugins/canvas/public/components/workpad_loader/workpad_loader.js b/x-pack/plugins/canvas/public/components/workpad_loader/workpad_loader.js index 28cfac11e76bd..af4e3af6db693 100644 --- a/x-pack/plugins/canvas/public/components/workpad_loader/workpad_loader.js +++ b/x-pack/plugins/canvas/public/components/workpad_loader/workpad_loader.js @@ -19,7 +19,7 @@ import { EuiFilePicker, EuiLink, } from '@elastic/eui'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; import { ConfirmModal } from '../confirm_modal'; import { Link } from '../link'; import { Paginate } from '../paginate'; @@ -369,7 +369,7 @@ export class WorkpadLoader extends React.PureComponent { if (!createPending && !isLoading) { const { workpads } = this.props.workpads; - sortedWorkpads = sortByOrder(workpads, [sortField, '@timestamp'], [sortDirection, 'desc']); + sortedWorkpads = orderBy(workpads, [sortField, '@timestamp'], [sortDirection, 'desc']); } return ( diff --git a/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx b/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx index 065b84c490d20..43d5d5f939ce0 100644 --- a/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx +++ b/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx @@ -18,7 +18,7 @@ import { Direction, SortDirection, } from '@elastic/eui'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; // @ts-ignore untyped local import { EuiBasicTableColumn } from '@elastic/eui'; import { Paginate, PaginateChildProps } from '../paginate'; @@ -182,7 +182,7 @@ export class WorkpadTemplates extends React.PureComponent< render() { const { templates } = this.props; const { sortField, sortDirection, searchTerm, filterTags } = this.state; - const sortedTemplates = sortByOrder(templates, [sortField, 'name'], [sortDirection, 'asc']); + const sortedTemplates = orderBy(templates, [sortField, 'name'], [sortDirection, 'asc']); const filteredTemplates = sortedTemplates.filter(({ name = '', help = '', tags = [] }) => { const tagMatch = filterTags.length diff --git a/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/extended_template.tsx b/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/extended_template.tsx index e0fe6e60c1dab..f02407ba2897d 100644 --- a/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/extended_template.tsx +++ b/x-pack/plugins/canvas/public/expression_types/arg_types/series_style/extended_template.tsx @@ -46,7 +46,7 @@ export const ExtendedTemplate: FunctionComponent = (props) => { name = typeInstance.name; } - const fields = get(typeInstance, 'options.include', []); + const fields: string[] = get(typeInstance, 'options.include', []); const hasPropFields = fields.some((field) => ['lines', 'bars', 'points'].indexOf(field) !== -1); const handleChange: (key: T, val: ChangeEvent) => void = ( diff --git a/x-pack/plugins/canvas/public/functions/filters.ts b/x-pack/plugins/canvas/public/functions/filters.ts index 48f4a41c7690a..ecde5d2eb255b 100644 --- a/x-pack/plugins/canvas/public/functions/filters.ts +++ b/x-pack/plugins/canvas/public/functions/filters.ts @@ -36,7 +36,7 @@ function getFiltersByGroup(allFilters: string[], groups?: string[], ungrouped = return allFilters.filter((filter: string) => { const ast = fromExpression(filter); - const expGroups = get(ast, 'chain[0].arguments.filterGroup', []); + const expGroups: string[] = get(ast, 'chain[0].arguments.filterGroup', []); return expGroups.length > 0 && expGroups.every((expGroup) => groups.includes(expGroup)); }); } diff --git a/x-pack/plugins/canvas/public/lib/keymap.ts b/x-pack/plugins/canvas/public/lib/keymap.ts index 7ca93f440087e..f713da5419b3e 100644 --- a/x-pack/plugins/canvas/public/lib/keymap.ts +++ b/x-pack/plugins/canvas/public/lib/keymap.ts @@ -153,10 +153,12 @@ export const keymap: KeyMap = { displayName: namespaceDisplayNames.PRESENTATION, FULLSCREEN: fullscreenShortcut, FULLSCREEN_EXIT: getShortcuts('esc', { help: shortcutHelp.FULLSCREEN_EXIT }), + // @ts-expect-error TODO: figure out why lodash is inferring booleans, rather than ShortcutMap. PREV: mapValues(previousPageShortcut, (osShortcuts: string[], key?: string) => // adds 'backspace' and 'left' to list of shortcuts per OS key === 'help' ? osShortcuts : osShortcuts.concat(['backspace', 'left']) ), + // @ts-expect-error TODO: figure out why lodash is inferring booleans, rather than ShortcutMap. NEXT: mapValues(nextPageShortcut, (osShortcuts: string[], key?: string) => // adds 'space' and 'right' to list of shortcuts per OS key === 'help' ? osShortcuts : osShortcuts.concat(['space', 'right']) diff --git a/x-pack/plugins/canvas/public/lib/modify_path.js b/x-pack/plugins/canvas/public/lib/modify_path.js index b4b2354b4cae0..714a616679bc9 100644 --- a/x-pack/plugins/canvas/public/lib/modify_path.js +++ b/x-pack/plugins/canvas/public/lib/modify_path.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import toPath from 'lodash.topath'; +import { toPath } from 'lodash'; export function prepend(path, value) { return toPath(value).concat(toPath(path)); diff --git a/x-pack/plugins/canvas/public/lib/template_from_react_component.tsx b/x-pack/plugins/canvas/public/lib/template_from_react_component.tsx index 17e2712c44b8d..f4e715b1bbc49 100644 --- a/x-pack/plugins/canvas/public/lib/template_from_react_component.tsx +++ b/x-pack/plugins/canvas/public/lib/template_from_react_component.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { ComponentType, FunctionComponent } from 'react'; +import React, { ComponentType, FC } from 'react'; import { unmountComponentAtNode, render } from 'react-dom'; import PropTypes from 'prop-types'; import { I18nProvider } from '@kbn/i18n/react'; @@ -16,9 +16,9 @@ interface Props { } export const templateFromReactComponent = (Component: ComponentType) => { - const WrappedComponent: FunctionComponent = (props) => ( + const WrappedComponent: FC = (props) => ( - {({ error }: { error: Error }) => { + {({ error }) => { if (error) { props.renderError(); return null; diff --git a/x-pack/plugins/canvas/public/state/selectors/resolved_args.ts b/x-pack/plugins/canvas/public/state/selectors/resolved_args.ts index 766e27d95da9b..770d4403f8587 100644 --- a/x-pack/plugins/canvas/public/state/selectors/resolved_args.ts +++ b/x-pack/plugins/canvas/public/state/selectors/resolved_args.ts @@ -12,7 +12,7 @@ import { prepend } from '../../lib/modify_path'; import { State } from '../../../types'; export function getArgs(state: State) { - return get(state, ['transient', 'resolvedArgs']); + return get(state, ['transient', 'resolvedArgs']); } export function getArg(state: State, path: any[]) { diff --git a/x-pack/plugins/canvas/public/state/selectors/workpad.ts b/x-pack/plugins/canvas/public/state/selectors/workpad.ts index 0f4953ff56d98..83f4984b4a300 100644 --- a/x-pack/plugins/canvas/public/state/selectors/workpad.ts +++ b/x-pack/plugins/canvas/public/state/selectors/workpad.ts @@ -50,7 +50,10 @@ export function getWorkpadPersisted(state: State) { } export function getWorkpadInfo(state: State): WorkpadInfo { - return omit(getWorkpad(state), ['pages']); + return { + ...getWorkpad(state), + pages: undefined, + }; } export function isWriteable(state: State): boolean { @@ -308,7 +311,7 @@ export function getElements( } const page = getPageById(state, id); - const elements = get(page, 'elements'); + const elements = get(page, 'elements'); if (!elements) { return []; @@ -318,6 +321,8 @@ export function getElements( // due to https://github.com/elastic/kibana-canvas/issues/260 // TODO: remove this once it's been in the wild a bit if (!withAst) { + // @ts-expect-error 'ast' is no longer on the CanvasElement type, but since we + // have JS calling into this, we can't be certain this call isn't necessary. return elements.map((el) => omit(el, ['ast'])); } @@ -330,11 +335,13 @@ const augment = (type: string) => (n: T): ...(type === 'group' && { expression: 'shape fill="rgba(255,255,255,0)" | render' }), // fixme unify with mw/aeroelastic }); -const getNodesOfPage = (page: CanvasPage): CanvasElement[] => { - const elements = get(page, 'elements').map(augment('element')); - const groups = get(page, 'groups', []).map(augment('group')); +const getNodesOfPage = (page: CanvasPage): Array => { + const elements: Array = get(page, 'elements').map( + augment('element') + ); + const groups = get(page, 'groups', [] as CanvasGroup[]).map(augment('group')); - return elements.concat(groups as CanvasElement[]); + return elements.concat(groups); }; export function getNodesForPage(page: CanvasPage, withAst: true): PositionedElement[]; @@ -343,7 +350,11 @@ export function getNodesForPage( page: CanvasPage, withAst: boolean ): CanvasElement[] | PositionedElement[]; -export function getNodesForPage(page: CanvasPage, withAst: boolean): CanvasElement[] { + +export function getNodesForPage( + page: CanvasPage, + withAst: boolean +): Array { const elements = getNodesOfPage(page); if (!elements) { @@ -354,9 +365,12 @@ export function getNodesForPage(page: CanvasPage, withAst: boolean): CanvasEleme // due to https://github.com/elastic/kibana-canvas/issues/260 // TODO: remove this once it's been in the wild a bit if (!withAst) { + // @ts-expect-error 'ast' is no longer on the CanvasElement type, but since we + // have JS calling into this, we can't be certain this call isn't necessary. return elements.map((el) => omit(el, ['ast'])); } + // @ts-expect-error All of this AST business needs to be cleaned up. return elements.map(appendAst); } @@ -407,7 +421,7 @@ export function getResolvedArgs(state: State, elementId: string, path: any): any if (!elementId) { return; } - const args = get(state, ['transient', 'resolvedArgs', elementId]); + const args = get(state, ['transient', 'resolvedArgs', elementId]) as any; if (path) { return get(args, path); } diff --git a/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts b/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts index 3ada8e7b4efdc..7b39e8b83b045 100644 --- a/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts +++ b/x-pack/plugins/canvas/server/collectors/custom_element_collector.ts @@ -113,7 +113,7 @@ const customElementCollector: TelemetryCollector = async function customElementC const esResponse = await callCluster('search', customElementParams); - if (get(esResponse, 'hits.hits.length') > 0) { + if (get(esResponse, 'hits.hits.length') > 0) { const customElements = esResponse.hits.hits.map((hit) => hit._source[CUSTOM_ELEMENT_TYPE]); return summarizeCustomElements(customElements); } diff --git a/x-pack/plugins/canvas/server/collectors/workpad_collector.test.ts b/x-pack/plugins/canvas/server/collectors/workpad_collector.test.ts index 420b785771bfe..9f71edcc05bf2 100644 --- a/x-pack/plugins/canvas/server/collectors/workpad_collector.test.ts +++ b/x-pack/plugins/canvas/server/collectors/workpad_collector.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import clonedeep from 'lodash.clonedeep'; +import { cloneDeep } from 'lodash'; import { summarizeWorkpads } from './workpad_collector'; import { workpads } from '../../__tests__/fixtures/workpads'; @@ -53,7 +53,7 @@ describe('usage collector handle es response data', () => { }); it('should collect correctly if an expression has null as an argument (possible sub-expression)', () => { - const workpad = clonedeep(workpads[0]); + const workpad = cloneDeep(workpads[0]); workpad.pages[0].elements[0].expression = 'toast butter=null'; const mockWorkpads = [workpad]; @@ -67,7 +67,7 @@ describe('usage collector handle es response data', () => { }); it('should fail gracefully if workpad has 0 pages (corrupted workpad)', () => { - const workpad = clonedeep(workpads[0]); + const workpad = cloneDeep(workpads[0]); workpad.pages = []; const mockWorkpadsCorrupted = [workpad]; const usage = summarizeWorkpads(mockWorkpadsCorrupted); diff --git a/x-pack/plugins/canvas/server/collectors/workpad_collector.ts b/x-pack/plugins/canvas/server/collectors/workpad_collector.ts index 3d394afaeba50..4b00d061c17ce 100644 --- a/x-pack/plugins/canvas/server/collectors/workpad_collector.ts +++ b/x-pack/plugins/canvas/server/collectors/workpad_collector.ts @@ -133,8 +133,8 @@ export function summarizeWorkpads(workpadDocs: CanvasWorkpad[]): WorkpadTelemetr total: elementsTotal, per_page: { avg: elementsTotal / elementCounts.length, - min: arrayMin(elementCounts), - max: arrayMax(elementCounts), + min: arrayMin(elementCounts) || 0, + max: arrayMax(elementCounts) || 0, }, } : undefined; @@ -145,8 +145,8 @@ export function summarizeWorkpads(workpadDocs: CanvasWorkpad[]): WorkpadTelemetr in_use: Array.from(functionSet), per_element: { avg: functionsTotal / functionCounts.length, - min: arrayMin(functionCounts), - max: arrayMax(functionCounts), + min: arrayMin(functionCounts) || 0, + max: arrayMax(functionCounts) || 0, }, } : undefined; @@ -170,7 +170,7 @@ const workpadCollector: TelemetryCollector = async function (kibanaIndex, callCl const esResponse = await callCluster('search', searchParams); - if (get(esResponse, 'hits.hits.length') > 0) { + if (get(esResponse, 'hits.hits.length') > 0) { const workpads = esResponse.hits.hits.map((hit) => hit._source[CANVAS_TYPE]); return summarizeWorkpads(workpads); } diff --git a/x-pack/plugins/canvas/server/routes/workpad/update.ts b/x-pack/plugins/canvas/server/routes/workpad/update.ts index 021ac41d88d19..9dae2047c30bf 100644 --- a/x-pack/plugins/canvas/server/routes/workpad/update.ts +++ b/x-pack/plugins/canvas/server/routes/workpad/update.ts @@ -7,6 +7,7 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { omit } from 'lodash'; import { KibanaResponseFactory, SavedObjectsClientContract } from 'src/core/server'; +import { CanvasWorkpad } from '../../../types'; import { RouteInitializerDeps } from '../'; import { CANVAS_TYPE, @@ -14,7 +15,6 @@ import { API_ROUTE_WORKPAD_STRUCTURES, API_ROUTE_WORKPAD_ASSETS, } from '../../../common/lib/constants'; -import { WorkpadAttributes } from './workpad_attributes'; import { WorkpadSchema, WorkpadAssetSchema } from './workpad_schema'; import { okResponse } from '../ok_response'; import { catchErrorHandler } from '../catch_error_handler'; @@ -33,8 +33,8 @@ const workpadUpdateHandler = async ( ) => { const now = new Date().toISOString(); - const workpadObject = await savedObjectsClient.get(CANVAS_TYPE, id); - await savedObjectsClient.create( + const workpadObject = await savedObjectsClient.get(CANVAS_TYPE, id); + await savedObjectsClient.create( CANVAS_TYPE, { ...workpadObject.attributes, diff --git a/x-pack/plugins/dashboard_mode/public/plugin.ts b/x-pack/plugins/dashboard_mode/public/plugin.ts index 24273280d9495..d988de5851cf5 100644 --- a/x-pack/plugins/dashboard_mode/public/plugin.ts +++ b/x-pack/plugins/dashboard_mode/public/plugin.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { trimLeft } from 'lodash'; +import { trimStart } from 'lodash'; import { CoreSetup } from 'kibana/public'; import { KibanaLegacyStart } from '../../../../src/plugins/kibana_legacy/public'; import { @@ -19,7 +19,7 @@ function defaultUrl(defaultAppId: string) { } function dashboardAppIdPrefix() { - return trimLeft(createDashboardEditUrl(''), '/'); + return trimStart(createDashboardEditUrl(''), '/'); } function migratePath(currentHash: string, kibanaLegacy: KibanaLegacyStart) { diff --git a/x-pack/plugins/data_enhanced/public/autocomplete/providers/kql_query_suggestion/index.ts b/x-pack/plugins/data_enhanced/public/autocomplete/providers/kql_query_suggestion/index.ts index 546dc6361826a..20b3292128a2f 100644 --- a/x-pack/plugins/data_enhanced/public/autocomplete/providers/kql_query_suggestion/index.ts +++ b/x-pack/plugins/data_enhanced/public/autocomplete/providers/kql_query_suggestion/index.ts @@ -6,7 +6,7 @@ import { CoreSetup } from 'kibana/public'; import { $Keys } from 'utility-types'; -import { flatten, uniq } from 'lodash'; +import { flatten, uniqBy } from 'lodash'; import { setupGetFieldSuggestions } from './field'; import { setupGetValueSuggestions } from './value'; import { setupGetOperatorSuggestions } from './operator'; @@ -21,7 +21,7 @@ import { const cursorSymbol = '@kuery-cursor@'; const dedup = (suggestions: QuerySuggestion[]): QuerySuggestion[] => - uniq(suggestions, ({ type, text, start, end }) => [type, text, start, end].join('|')); + uniqBy(suggestions, ({ type, text, start, end }) => [type, text, start, end].join('|')); export const KUERY_LANGUAGE_NAME = 'kuery'; diff --git a/x-pack/plugins/event_log/server/event_log_service.ts b/x-pack/plugins/event_log/server/event_log_service.ts index 6cfb16d126427..f7f915f1cf0ef 100644 --- a/x-pack/plugins/event_log/server/event_log_service.ts +++ b/x-pack/plugins/event_log/server/event_log_service.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { Observable } from 'rxjs'; import { LegacyClusterClient } from 'src/core/server'; diff --git a/x-pack/plugins/event_log/server/event_log_start_service.ts b/x-pack/plugins/event_log/server/event_log_start_service.ts index 36a6bc0a926af..0339d0883dc46 100644 --- a/x-pack/plugins/event_log/server/event_log_start_service.ts +++ b/x-pack/plugins/event_log/server/event_log_start_service.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { Observable } from 'rxjs'; import { LegacyClusterClient, diff --git a/x-pack/plugins/features/server/ui_capabilities_for_features.ts b/x-pack/plugins/features/server/ui_capabilities_for_features.ts index e41035e9365ce..2570d4540b6a6 100644 --- a/x-pack/plugins/features/server/ui_capabilities_for_features.ts +++ b/x-pack/plugins/features/server/ui_capabilities_for_features.ts @@ -8,7 +8,7 @@ import _ from 'lodash'; import { Capabilities as UICapabilities } from '../../../../src/core/server'; import { Feature } from '../common/feature'; -const ELIGIBLE_FLAT_MERGE_KEYS = ['catalogue']; +const ELIGIBLE_FLAT_MERGE_KEYS = ['catalogue'] as const; interface FeatureCapabilities { [featureId: string]: Record; @@ -67,7 +67,7 @@ function getCapabilitiesFromFeature(feature: Feature): FeatureCapabilities { function buildCapabilities(...allFeatureCapabilities: FeatureCapabilities[]): UICapabilities { return allFeatureCapabilities.reduce((acc, capabilities) => { - const mergableCapabilities: UICapabilities = _.omit(capabilities, ...ELIGIBLE_FLAT_MERGE_KEYS); + const mergableCapabilities = _.omit(capabilities, ...ELIGIBLE_FLAT_MERGE_KEYS); const mergedFeatureCapabilities = { ...mergableCapabilities, diff --git a/x-pack/plugins/graph/server/routes/explore.ts b/x-pack/plugins/graph/server/routes/explore.ts index 648010eeeafeb..b0b8cf14ff699 100644 --- a/x-pack/plugins/graph/server/routes/explore.ts +++ b/x-pack/plugins/graph/server/routes/explore.ts @@ -59,7 +59,7 @@ export function registerExploreRoute({ error, 'body.error.root_cause', [] as Array<{ type: string; reason: string }> - ).find((cause) => { + ).find((cause: { type: string; reason: string }) => { return ( cause.reason.includes('Fielddata is disabled on text fields') || cause.reason.includes('No support for examining floating point') || diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.js b/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.js index e7afc8f12859c..a1eac5264bb6a 100644 --- a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.js +++ b/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.js @@ -5,7 +5,7 @@ */ import React from 'react'; -import { get, every, any } from 'lodash'; +import { get, every, some } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EuiSearchBar } from '@elastic/eui'; @@ -129,7 +129,7 @@ export const ilmSummaryExtension = (index, getUrlForApp) => { }; export const ilmFilterExtension = (indices) => { - const hasIlm = any(indices, (index) => index.ilm && index.ilm.managed); + const hasIlm = some(indices, (index) => index.ilm && index.ilm.managed); if (!hasIlm) { return []; } else { diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_actions_context_menu/index_actions_context_menu.js b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_actions_context_menu/index_actions_context_menu.js index 1931884cf7306..5c249ee474b00 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_actions_context_menu/index_actions_context_menu.js +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_actions_context_menu/index_actions_context_menu.js @@ -7,7 +7,7 @@ import React, { Component, Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { all } from 'lodash'; +import { every } from 'lodash'; import { EuiBadge, EuiButton, @@ -66,11 +66,11 @@ export class IndexActionsContextMenu extends Component { unfreezeIndices, hasSystemIndex, } = this.props; - const allOpen = all(indexNames, (indexName) => { + const allOpen = every(indexNames, (indexName) => { return indexStatusByName[indexName] === INDEX_OPEN; }); - const allFrozen = all(indices, (index) => index.isFrozen); - const allUnfrozen = all(indices, (index) => !index.isFrozen); + const allFrozen = every(indices, (index) => index.isFrozen); + const allUnfrozen = every(indices, (index) => !index.isFrozen); const selectedIndexCount = indexNames.length; const items = []; if (!detailPanel && selectedIndexCount === 1) { diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx index d0b4045949d3e..8d36262b55792 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx @@ -364,7 +364,7 @@ export const Expressions: React.FC = (props) => { = (props) => { = ({ const dateFormatter = useMemo(() => { const firstSeries = data ? first(data.series) : null; return firstSeries && firstSeries.rows.length > 0 - ? niceTimeFormatter([first(firstSeries.rows).timestamp, last(firstSeries.rows).timestamp]) + ? niceTimeFormatter([ + (first(firstSeries.rows) as any).timestamp, + (last(firstSeries.rows) as any).timestamp, + ]) : (value: number) => `${value}`; }, [data]); @@ -135,8 +138,8 @@ export const ExpressionChart: React.FC = ({ }), }; - const firstTimestamp = first(firstSeries.rows).timestamp; - const lastTimestamp = last(firstSeries.rows).timestamp; + const firstTimestamp = (first(firstSeries.rows) as any).timestamp; + const lastTimestamp = (last(firstSeries.rows) as any).timestamp; const dataDomain = calculateDomain(series, [metric], false); const domain = { max: Math.max(dataDomain.max, last(thresholds) || dataDomain.max) * 1.1, // add 10% headroom. diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/lib/transform_metrics_explorer_data.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/lib/transform_metrics_explorer_data.ts index 0e631b1e333d7..f46a7f3e5a5e4 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/lib/transform_metrics_explorer_data.ts +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/lib/transform_metrics_explorer_data.ts @@ -14,8 +14,8 @@ export const transformMetricsExplorerData = ( ) => { const { criteria } = params; if (criteria && data) { - const firstSeries = first(data.series); - const series = firstSeries.rows.reduce((acc, row) => { + const firstSeries = first(data.series) as any; + const series = firstSeries.rows.reduce((acc: any, row: any) => { const { timestamp } = row; criteria.forEach((item, index) => { if (!acc[index]) { diff --git a/x-pack/plugins/infra/public/pages/link_to/redirect_to_logs.tsx b/x-pack/plugins/infra/public/pages/link_to/redirect_to_logs.tsx index cc4b6967d34fb..c2b49c43281a9 100644 --- a/x-pack/plugins/infra/public/pages/link_to/redirect_to_logs.tsx +++ b/x-pack/plugins/infra/public/pages/link_to/redirect_to_logs.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { compose } from 'lodash'; +import { flowRight } from 'lodash'; import React from 'react'; import { match as RouteMatch, Redirect, RouteComponentProps } from 'react-router-dom'; @@ -24,7 +24,7 @@ interface RedirectToLogsProps extends RedirectToLogsType { export const RedirectToLogs = ({ location, match }: RedirectToLogsProps) => { const sourceId = match.params.sourceId || 'default'; const filter = getFilterFromLocation(location); - const searchString = compose( + const searchString = flowRight( replaceLogFilterInQueryString(filter), replaceLogPositionInQueryString(getTimeFromLocation(location)), replaceSourceIdInQueryString(sourceId) diff --git a/x-pack/plugins/infra/public/pages/link_to/redirect_to_node_logs.tsx b/x-pack/plugins/infra/public/pages/link_to/redirect_to_node_logs.tsx index 10320ebbe7609..37203084124f5 100644 --- a/x-pack/plugins/infra/public/pages/link_to/redirect_to_node_logs.tsx +++ b/x-pack/plugins/infra/public/pages/link_to/redirect_to_node_logs.tsx @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; -import { compose } from 'lodash'; +import { flowRight } from 'lodash'; import React from 'react'; import { Redirect, RouteComponentProps } from 'react-router-dom'; @@ -65,7 +65,7 @@ export const RedirectToNodeLogs = ({ const userFilter = getFilterFromLocation(location); const filter = userFilter ? `(${nodeFilter}) and (${userFilter})` : nodeFilter; - const searchString = compose( + const searchString = flowRight( replaceLogFilterInQueryString(filter), replaceLogPositionInQueryString(getTimeFromLocation(location)), replaceSourceIdInQueryString(sourceId) 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 538cd5f7d9525..3997a7eab44e8 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 @@ -266,7 +266,7 @@ export const LegendControls = ({ fullWidth label={ { @@ -79,7 +79,7 @@ export const calculateSteppedGradientColor = ( return rule.color; } return color; - }, first(rules).color || defaultColor); + }, (first(rules) as any).color || defaultColor); }; export const calculateStepColor = ( @@ -106,7 +106,7 @@ export const calculateGradientColor = ( return defaultColor; } if (rules.length === 1) { - return last(rules).color; + return (last(rules) as any).color; } const { min, max } = bounds; const sortedRules = sortBy(rules, 'value'); @@ -116,8 +116,10 @@ export const calculateGradientColor = ( return rule; } return acc; - }, first(sortedRules)); - const endRule = sortedRules.filter((r) => r !== startRule).find((r) => r.value >= normValue); + }, first(sortedRules)) as any; + const endRule = sortedRules + .filter((r) => r !== startRule) + .find((r) => r.value >= normValue) as any; if (!endRule) { return startRule.color; } diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/lib/nodes_to_wafflemap.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/lib/nodes_to_wafflemap.ts index a5515895a51a0..b56b409717cc6 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/lib/nodes_to_wafflemap.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/lib/nodes_to_wafflemap.ts @@ -30,7 +30,7 @@ function findOrCreateGroupWithNodes( * then look for the group in it's sub groups. */ if (path.length === 2) { - const parentId = first(path).value; + const parentId = (first(path) as any).value; const existingParentGroup = groups.find((g) => g.id === parentId); if (isWaffleMapGroupWithGroups(existingParentGroup)) { const existingSubGroup = existingParentGroup.groups.find((g) => g.id === id); diff --git a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/helpers.ts b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/helpers.ts index 0b8773db2dddf..c2cde7eb15e95 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/helpers.ts +++ b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/helpers.ts @@ -44,7 +44,7 @@ export const getMaxMinTimestamp = (metric: NodeDetailsMetricData): [number, numb const lastRow = last(item.data); return acc.concat([(firstRow && firstRow.timestamp) || 0, (lastRow && lastRow.timestamp) || 0]); }, [] as number[]); - return [min(values), max(values)]; + return [min(values) as number, max(values) as number]; }; /** diff --git a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/chart.tsx b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/chart.tsx index 2a218c1c78aa3..3802366fe2ac5 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/chart.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/chart.tsx @@ -77,7 +77,10 @@ export const MetricsExplorerChart = ({ const dateFormatter = useMemo( () => series.rows.length > 0 - ? niceTimeFormatter([first(series.rows).timestamp, last(series.rows).timestamp]) + ? niceTimeFormatter([ + (first(series.rows) as any).timestamp, + (last(series.rows) as any).timestamp, + ]) : (value: number) => `${value}`, [series.rows] ); diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/evaluate_condition.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/evaluate_condition.ts index f4dc7de51daee..e3d23d86c9f56 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/evaluate_condition.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/evaluate_condition.ts @@ -103,7 +103,7 @@ const getData = async ( const { nodes } = await snapshot.getNodes(esClient, options); return nodes.reduce((acc, n) => { - const nodePathItem = last(n.path); + const nodePathItem = last(n.path) as any; const m = first(n.metrics); if (m && m.value && m.timeseries) { const { timeseries } = m; diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts index 445911878111f..1ef86d9e7eac4 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts @@ -52,7 +52,7 @@ export const createInventoryMetricThresholdExecutor = ( ) ); - const inventoryItems = Object.keys(first(results)); + const inventoryItems = Object.keys(first(results) as any); for (const item of inventoryItems) { const alertInstance = services.alertInstanceFactory(`${item}::${alertId}`); // AND logic; all criteria must be across the threshold diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/preview_inventory_metric_threshold_alert.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/preview_inventory_metric_threshold_alert.ts index ba43303bccf0b..b865454951cd2 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/preview_inventory_metric_threshold_alert.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/preview_inventory_metric_threshold_alert.ts @@ -53,7 +53,7 @@ export const previewInventoryMetricThresholdAlert = async ({ ) ); - const inventoryItems = Object.keys(first(results)); + const inventoryItems = Object.keys(first(results) as any); const previewResults = inventoryItems.map((item) => { const isNoData = results.some((result) => result[item].isNoData); if (isNoData) { diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts index 5782277e4f469..4c02593dd0095 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts @@ -33,8 +33,8 @@ export const createMetricThresholdExecutor = (libs: InfraBackendLibs, alertId: s const config = source.configuration; const alertResults = await evaluateAlert(services.callCluster, params, config); - // Because each alert result has the same group definitions, just grab the groups from the first one. - const groups = Object.keys(first(alertResults)); + // Because each alert result has the same group definitions, just grap the groups from the first one. + const groups = Object.keys(first(alertResults) as any); for (const group of groups) { const alertInstance = services.alertInstanceFactory(`${group}::${alertId}`); @@ -58,7 +58,9 @@ export const createMetricThresholdExecutor = (libs: InfraBackendLibs, alertId: s let reason; if (nextState === AlertStates.ALERT) { - reason = alertResults.map((result) => buildFiredAlertReason(result[group])).join('\n'); + reason = alertResults + .map((result) => buildFiredAlertReason(result[group] as any)) + .join('\n'); } if (alertOnNoData) { if (nextState === AlertStates.NO_DATA) { diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/preview_metric_threshold_alert.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/preview_metric_threshold_alert.ts index 39db24684e8d3..0ecfa27d0f0a8 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/preview_metric_threshold_alert.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/preview_metric_threshold_alert.ts @@ -70,7 +70,7 @@ export const previewMetricThresholdAlert: ( // Get a date histogram using the bucket interval and the lookback interval try { const alertResults = await evaluateAlert(callCluster, params, config, timeframe); - const groups = Object.keys(first(alertResults)); + const groups = Object.keys(first(alertResults) as any); // Now determine how to interpolate this histogram based on the alert interval const alertIntervalInSeconds = getIntervalInSeconds(alertInterval); @@ -90,7 +90,7 @@ export const previewMetricThresholdAlert: ( // buckets would have fired the alert. If the alert interval and bucket interval are the same, // this will be a 1:1 evaluation of the alert results. If these are different, the interpolation // will skip some buckets or read some buckets more than once, depending on the differential - const numberOfResultBuckets = first(alertResults)[group].shouldFire.length; + const numberOfResultBuckets = (first(alertResults) as any)[group].shouldFire.length; const numberOfExecutionBuckets = Math.floor( numberOfResultBuckets / alertResultsPerExecution ); @@ -118,7 +118,8 @@ export const previewMetricThresholdAlert: ( ? await evaluateAlert(callCluster, params, config) : []; const numberOfGroups = - precalculatedNumberOfGroups ?? Math.max(Object.keys(first(currentAlertResults)).length, 1); + precalculatedNumberOfGroups ?? + Math.max(Object.keys(first(currentAlertResults) as any).length, 1); const estimatedTotalBuckets = (lookbackIntervalInSeconds / bucketIntervalInSeconds) * numberOfGroups; // The minimum number of slices is 2. In case we underestimate the total number of buckets @@ -156,7 +157,7 @@ export const previewMetricThresholdAlert: ( return a + b; }) ); - return zippedResult; + return zippedResult as any; } else throw e; } }; diff --git a/x-pack/plugins/infra/server/lib/snapshot/response_helpers.ts b/x-pack/plugins/infra/server/lib/snapshot/response_helpers.ts index bb1c4c6632af0..317a7da95ce6b 100644 --- a/x-pack/plugins/infra/server/lib/snapshot/response_helpers.ts +++ b/x-pack/plugins/infra/server/lib/snapshot/response_helpers.ts @@ -127,7 +127,7 @@ export const getNodeMetrics = ( avg: null, })); } - const lastBucket = findLastFullBucket(nodeBuckets, options); + const lastBucket = findLastFullBucket(nodeBuckets, options) as any; return options.metrics.map((metric, index) => { const metricResult: SnapshotNodeMetric = { name: metric.type, diff --git a/x-pack/plugins/infra/server/routes/ip_to_hostname.ts b/x-pack/plugins/infra/server/routes/ip_to_hostname.ts index 28b7777c1d688..08ad266a22f9b 100644 --- a/x-pack/plugins/infra/server/routes/ip_to_hostname.ts +++ b/x-pack/plugins/infra/server/routes/ip_to_hostname.ts @@ -48,7 +48,7 @@ export const initIpToHostName = ({ framework }: InfraBackendLibs) => { body: { message: 'Host with matching IP address not found.' }, }); } - const hostDoc = first(hits.hits); + const hostDoc = first(hits.hits) as any; return response.ok({ body: { host: hostDoc._source.host.name } }); } catch ({ statusCode = 500, message = 'Unknown error occurred' }) { return response.customError({ diff --git a/x-pack/plugins/infra/server/routes/metadata/index.ts b/x-pack/plugins/infra/server/routes/metadata/index.ts index 7e3a30e1e6918..b2664d5a6d9fe 100644 --- a/x-pack/plugins/infra/server/routes/metadata/index.ts +++ b/x-pack/plugins/infra/server/routes/metadata/index.ts @@ -59,7 +59,7 @@ export const initMetadataRoute = (libs: InfraBackendLibs) => { ); const info = await getNodeInfo(framework, requestContext, configuration, nodeId, nodeType); - const cloudInstanceId = get(info, 'cloud.instance.id'); + const cloudInstanceId = get(info, 'cloud.instance.id'); const cloudMetricsMetadata = cloudInstanceId ? await getCloudMetricsMetadata( diff --git a/x-pack/plugins/infra/server/utils/create_afterkey_handler.ts b/x-pack/plugins/infra/server/utils/create_afterkey_handler.ts index 559fba0799987..2b65c42410723 100644 --- a/x-pack/plugins/infra/server/utils/create_afterkey_handler.ts +++ b/x-pack/plugins/infra/server/utils/create_afterkey_handler.ts @@ -14,7 +14,7 @@ export const createAfterKeyHandler = ( if (!response.aggregations) { return options; } - const newOptions = { ...options }; + const newOptions = { ...options } as any; const afterKey = afterKeySelector(response); set(newOptions, optionsAfterKeyPath, afterKey); return newOptions; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts index d62f3dbcf029a..b41e93def966e 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts @@ -55,7 +55,7 @@ export function getSavedObjectFormat({ state: { datasourceStates, datasourceMetaData: { - filterableIndexPatterns: _.uniq(filterableIndexPatterns, 'id'), + filterableIndexPatterns: _.uniqBy(filterableIndexPatterns, 'id'), }, visualization: visualization.getPersistableState(state.visualization.state), query: framePublicAPI.query, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx index 851a9f4653fec..94c0f4083dfee 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx index 0e7cefb58fc28..eb7940634d78e 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx @@ -5,7 +5,7 @@ */ import './datapanel.scss'; -import { uniq, indexBy, groupBy, throttle } from 'lodash'; +import { uniq, keyBy, groupBy, throttle } from 'lodash'; import React, { useState, useEffect, memo, useCallback, useMemo } from 'react'; import { EuiFlexGroup, @@ -256,7 +256,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ const fieldGroups: FieldsGroup = useMemo(() => { const containsData = (field: IndexPatternField) => { - const fieldByName = indexBy(allFields, 'name'); + const fieldByName = keyBy(allFields, 'name'); const overallField = fieldByName[field.name]; return ( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index df49ed828a190..ebb706258cf45 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFormRow, EuiHorizontalRule, EuiRadio, EuiSelect, htmlIdGenerator } from '@elastic/eui'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/popover_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/popover_editor.tsx index 34a4384ec0d40..5b84108b99dd9 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/popover_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/popover_editor.tsx @@ -119,7 +119,7 @@ export function PopoverEditor(props: PopoverEditorProps) { validOperationTypes.push(...operationByField[selectedColumn.sourceField]!); } - return _.uniq( + return _.uniqBy( [ ...asOperationOptions(validOperationTypes, true), ...asOperationOptions(possibleOperationTypes, false), diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts index 89e2c753f4c76..111a113a16be7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts @@ -57,14 +57,11 @@ function buildSuggestion({ // two match up. const layers = _.mapValues(updatedState.layers, (layer) => ({ ...layer, - columns: _.pick, Record>( - layer.columns, - layer.columnOrder - ), + columns: _.pick(layer.columns, layer.columnOrder) as Record, })); const columnOrder = layers[layerId].columnOrder; - const columnMap = layers[layerId].columns; + const columnMap = layers[layerId].columns as Record; const isMultiRow = Object.values(columnMap).some((column) => column.isBucketed); return { @@ -108,7 +105,10 @@ export function getDatasourceSuggestionsForField( // The field we're suggesting on matches an existing layer. In this case we find the layer with // the fewest configured columns and try to add the field to this table. If this layer does not // contain any layers yet, behave as if there is no layer. - const mostEmptyLayerId = _.min(layerIds, (layerId) => state.layers[layerId].columnOrder.length); + const mostEmptyLayerId = _.minBy( + layerIds, + (layerId) => state.layers[layerId].columnOrder.length + ) as string; if (state.layers[mostEmptyLayerId].columnOrder.length === 0) { return getEmptyLayerSuggestionsForField(state, mostEmptyLayerId, indexPatternId, field); } else { @@ -491,7 +491,7 @@ function createChangedNestingSuggestion(state: IndexPatternPrivateState, layerId } function getMetricColumn(indexPattern: IndexPattern, layerId: string, field: IndexPatternField) { - const operationDefinitionsMap = _.indexBy(operationDefinitions, 'type'); + const operationDefinitionsMap = _.keyBy(operationDefinitions, 'type'); const [column] = getOperationTypesForField(field) .map((type) => operationDefinitionsMap[type].buildColumn({ diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.tsx index eea00d52a77f9..1ae10e07b0c24 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.tsx @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import React from 'react'; import { I18nProvider } from '@kbn/i18n/react'; import { DatasourceLayerPanelProps } from '../types'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts b/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts index 101f536993365..e995c7317b5d8 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/loader.ts @@ -96,7 +96,7 @@ export async function loadInitialState({ const indexPatternRefs = await loadIndexPatternRefs(savedObjectsClient); const lastUsedIndexPatternId = getLastUsedIndexPatternId(storage, indexPatternRefs); - const requiredPatterns = _.unique( + const requiredPatterns = _.uniq( state ? Object.values(state.layers) .map((l) => l.indexPatternId) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts index a04f71a9095c5..9e5a0f496357d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { DimensionPriority, OperationMetadata } from '../../types'; import { operationDefinitionMap, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts index 3a1aaaa819dc0..51691ae18a99a 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts @@ -161,7 +161,7 @@ export function updateLayerIndexPattern( layer: IndexPatternLayer, newIndexPattern: IndexPattern ): IndexPatternLayer { - const keptColumns: IndexPatternLayer['columns'] = _.pick(layer.columns, (column) => + const keptColumns: IndexPatternLayer['columns'] = _.pickBy(layer.columns, (column) => isColumnTransferable(column, newIndexPattern) ); const newColumns: IndexPatternLayer['columns'] = _.mapValues(keptColumns, (column) => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts index e507bee2a898d..9473a1523b8ca 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { Ast, ExpressionFunctionAST } from '@kbn/interpreter/common'; import { IndexPatternColumn } from './indexpattern'; import { operationDefinitionMap } from './operations'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts b/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts index fadee01e695d5..0cd92fd96c952 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { DraggedField } from './indexpattern'; import { BaseIndexPatternColumn, diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx index 474ea5c5b08cd..d38f51cb1621a 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx @@ -31,7 +31,7 @@ function getVisualizationType(state: State): VisualizationType | 'mixed' { ); } const visualizationType = visualizationTypes.find((t) => t.id === state.layers[0].seriesType); - const seriesTypes = _.unique(state.layers.map((l) => l.seriesType)); + const seriesTypes = _.uniq(state.layers.map((l) => l.seriesType)); return visualizationType && seriesTypes.length === 1 ? visualizationType : 'mixed'; } diff --git a/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js b/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js index 3a304e467e0c0..7d541ec192e0f 100755 --- a/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js +++ b/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { pick, capitalize } from 'lodash'; +import { pick, upperFirst } from 'lodash'; import moment from 'moment'; import { getSearchValue } from '../../lib/get_search_value'; @@ -26,7 +26,7 @@ export class PipelineListItem { if (props.lastModified) { this.lastModified = getMomentDate(props.lastModified); - this.lastModifiedHumanized = capitalize(this.lastModified.fromNow()); + this.lastModifiedHumanized = upperFirst(this.lastModified.fromNow()); } } diff --git a/x-pack/plugins/logstash/server/models/cluster/cluster.ts b/x-pack/plugins/logstash/server/models/cluster/cluster.ts index 54f03605e14d6..6bc57eae41b76 100755 --- a/x-pack/plugins/logstash/server/models/cluster/cluster.ts +++ b/x-pack/plugins/logstash/server/models/cluster/cluster.ts @@ -25,7 +25,7 @@ export class Cluster { // generate Pipeline object from elasticsearch response static fromUpstreamJSON(upstreamCluster: Record) { - const uuid = get(upstreamCluster, 'cluster_uuid'); + const uuid = get(upstreamCluster, 'cluster_uuid') as string; return new Cluster({ uuid }); } } diff --git a/x-pack/plugins/logstash/server/models/pipeline/pipeline.ts b/x-pack/plugins/logstash/server/models/pipeline/pipeline.ts index 3f2debeebeb46..8ce04c83afdbf 100755 --- a/x-pack/plugins/logstash/server/models/pipeline/pipeline.ts +++ b/x-pack/plugins/logstash/server/models/pipeline/pipeline.ts @@ -103,11 +103,11 @@ export class Pipeline { ) ); } - const id = get(upstreamPipeline, '_id'); - const description = get(upstreamPipeline, '_source.description'); - const username = get(upstreamPipeline, '_source.username'); - const pipeline = get(upstreamPipeline, '_source.pipeline'); - const settings = get>(upstreamPipeline, '_source.pipeline_settings'); + const id = get(upstreamPipeline, '_id') as string; + const description = get(upstreamPipeline, '_source.description') as string; + const username = get(upstreamPipeline, '_source.username') as string; + const pipeline = get(upstreamPipeline, '_source.pipeline') as string; + const settings = get(upstreamPipeline, '_source.pipeline_settings') as Record; const opts: PipelineOptions = { id, description, username, pipeline, settings }; diff --git a/x-pack/plugins/logstash/server/models/pipeline_list_item/pipeline_list_item.ts b/x-pack/plugins/logstash/server/models/pipeline_list_item/pipeline_list_item.ts index 98c91fca1fcca..eeb197a58f51d 100755 --- a/x-pack/plugins/logstash/server/models/pipeline_list_item/pipeline_list_item.ts +++ b/x-pack/plugins/logstash/server/models/pipeline_list_item/pipeline_list_item.ts @@ -37,9 +37,9 @@ export class PipelineListItem { static fromUpstreamJSON(pipeline: Hit) { const opts = { id: pipeline._id, - description: get(pipeline, '_source.description'), - last_modified: get(pipeline, '_source.last_modified'), - username: get(pipeline, '_source.username'), + description: get(pipeline, '_source.description') as string, + last_modified: get(pipeline, '_source.last_modified') as string, + username: get(pipeline, '_source.username') as string, }; return new PipelineListItem(opts); diff --git a/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/update_source_editor.tsx b/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/update_source_editor.tsx index a959912718197..8c2f5e271ff5c 100644 --- a/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/update_source_editor.tsx +++ b/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/update_source_editor.tsx @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import _ from 'lodash'; import React, { Component, Fragment } from 'react'; import { EuiTitle, EuiPanel, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/x-pack/plugins/maps/public/classes/styles/vector/components/field_meta/categorical_field_meta_popover.tsx b/x-pack/plugins/maps/public/classes/styles/vector/components/field_meta/categorical_field_meta_popover.tsx index 550b3737963d5..fac002d0a877d 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/components/field_meta/categorical_field_meta_popover.tsx +++ b/x-pack/plugins/maps/public/classes/styles/vector/components/field_meta/categorical_field_meta_popover.tsx @@ -5,7 +5,6 @@ */ /* eslint-disable @typescript-eslint/consistent-type-definitions */ -import _ from 'lodash'; import React from 'react'; import { EuiFormRow, EuiSwitch, EuiSwitchEvent } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; diff --git a/x-pack/plugins/maps/public/classes/util/data_request.ts b/x-pack/plugins/maps/public/classes/util/data_request.ts index 44b7b2ffb6ae7..42c19b8c641e0 100644 --- a/x-pack/plugins/maps/public/classes/util/data_request.ts +++ b/x-pack/plugins/maps/public/classes/util/data_request.ts @@ -5,7 +5,6 @@ */ /* eslint-disable max-classes-per-file */ -import _ from 'lodash'; import { DataRequestDescriptor, DataMeta } from '../../../common/descriptor_types'; export class DataRequest { diff --git a/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts b/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts index 0e29eca244642..5f57d666b9f74 100644 --- a/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts +++ b/x-pack/plugins/maps/server/maps_telemetry/maps_telemetry.ts @@ -45,8 +45,8 @@ function getUniqueLayerCounts(layerCountsList: ILayerTypeCount[], mapsCount: num ); const typeCountsSum = _.sum(typeCounts); accu[type] = { - min: typeCounts.length ? _.min(typeCounts) : 0, - max: typeCounts.length ? _.max(typeCounts) : 0, + min: typeCounts.length ? (_.min(typeCounts) as number) : 0, + max: typeCounts.length ? (_.max(typeCounts) as number) : 0, avg: typeCountsSum ? typeCountsSum / mapsCount : 0, }; return accu; @@ -115,9 +115,9 @@ export function buildMapsTelemetry({ const isEmsFile = _.get(layer, 'sourceDescriptor.type') === SOURCE_TYPES.EMS_FILE; return isEmsFile && _.get(layer, 'sourceDescriptor.id'); }) - .pick((val, key) => key !== 'false') + .pickBy((val, key) => key !== 'false') .value() - ); + ) as ILayerTypeCount[]; const dataSourcesCountSum = _.sum(dataSourcesCount); const layersCountSum = _.sum(layersCount); @@ -174,10 +174,10 @@ export async function getMapsTelemetry(config: MapsConfigType) { const savedObjectsClient = getInternalRepository(); // @ts-ignore const mapSavedObjects: MapSavedObject[] = await getMapSavedObjects(savedObjectsClient); - const indexPatternSavedObjects: IIndexPattern[] = await getIndexPatternSavedObjects( + const indexPatternSavedObjects: IIndexPattern[] = (await getIndexPatternSavedObjects( // @ts-ignore savedObjectsClient - ); + )) as IIndexPattern[]; const settings: SavedObjectAttribute = { showMapVisualizationTypes: config.showMapVisualizationTypes, }; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js index 8b30dccc25306..898e29a303881 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container_service.js @@ -560,7 +560,7 @@ function calculateChartRange( // Calculate the time range for the charts. // Fit in as many points in the available container width plotted at the job bucket span. const midpointMs = Math.ceil((earliestMs + latestMs) / 2); - const maxBucketSpanMs = Math.max.apply(null, _.pluck(seriesConfigs, 'bucketSpanSeconds')) * 1000; + const maxBucketSpanMs = Math.max.apply(null, _.map(seriesConfigs, 'bucketSpanSeconds')) * 1000; const pointsToPlotFullSelection = Math.ceil((latestMs - earliestMs) / maxBucketSpanMs); diff --git a/x-pack/plugins/ml/public/application/util/string_utils.js b/x-pack/plugins/ml/public/application/util/string_utils.js index 450c166f90300..7411820ba3239 100644 --- a/x-pack/plugins/ml/public/application/util/string_utils.js +++ b/x-pack/plugins/ml/public/application/util/string_utils.js @@ -91,7 +91,7 @@ export function sortByKey(list, reverse, comparator) { keys = keys.reverse(); } - return _.object( + return _.zipObject( keys, _.map(keys, (key) => { return list[key]; diff --git a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts index 78cc7901363cd..d58c797b446db 100644 --- a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts +++ b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts @@ -143,7 +143,7 @@ export class DataVisualizer { // split the check into multiple batches (max 200 fields per request). const batches: string[][] = [[]]; _.each(aggregatableFields, (field) => { - let lastArray: string[] = _.last(batches); + let lastArray: string[] = _.last(batches) as string[]; if (lastArray.length === AGGREGATABLE_EXISTS_REQUEST_BATCH_SIZE) { lastArray = []; batches.push(lastArray); @@ -229,7 +229,7 @@ export class DataVisualizer { if (batchedFields[fieldType] === undefined) { batchedFields[fieldType] = [[]]; } - let lastArray: Field[] = _.last(batchedFields[fieldType]); + let lastArray: Field[] = _.last(batchedFields[fieldType]) as Field[]; if (lastArray.length === FIELDS_REQUEST_BATCH_SIZE) { lastArray = []; batchedFields[fieldType].push(lastArray); @@ -867,7 +867,7 @@ export class DataVisualizer { [...aggsPath, `${safeFieldName}_values`, 'buckets'], [] ); - _.each(valueBuckets, (bucket) => { + _.forEach(valueBuckets, (bucket) => { stats[`${bucket.key_as_string}Count`] = bucket.doc_count; }); @@ -958,7 +958,7 @@ export class DataVisualizer { // Look ahead to the last percentiles and process these too if // they don't add more than 50% to the value range. - const lastValue = _.last(percentileBuckets).value; + const lastValue = (_.last(percentileBuckets) as any).value; const upperBound = lowerBound + 1.5 * (lastValue - lowerBound); const filteredLength = percentileBuckets.length; for (let i = filteredLength; i < percentiles.length; i++) { @@ -979,7 +979,7 @@ export class DataVisualizer { // Add in 0-5 and 95-100% if they don't add more // than 25% to the value range at either end. - const lastValue: number = _.last(percentileBuckets).value; + const lastValue: number = (_.last(percentileBuckets) as any).value; const maxDiff = 0.25 * (lastValue - lowerBound); if (lowerBound - dataMin < maxDiff) { percentileBuckets.splice(0, 0, percentiles[0]); diff --git a/x-pack/plugins/monitoring/public/angular/app_modules.ts b/x-pack/plugins/monitoring/public/angular/app_modules.ts index 726d4be4924d7..9ebb074ec7c3b 100644 --- a/x-pack/plugins/monitoring/public/angular/app_modules.ts +++ b/x-pack/plugins/monitoring/public/angular/app_modules.ts @@ -10,7 +10,7 @@ import '../views/all'; import 'angular-sanitize'; import 'angular-route'; import '../index.scss'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import { i18nDirective, i18nFilter, I18nProvider } from '@kbn/i18n/angular'; import { AppMountContext } from 'kibana/public'; import { Storage } from '../../../../../src/plugins/kibana_utils/public'; @@ -159,7 +159,7 @@ function createMonitoringAppFilters() { .module('monitoring/filters', []) .filter('capitalize', function () { return function (input: string) { - return capitalize(input?.toLowerCase()); + return upperFirst(input?.toLowerCase()); }; }) .filter('formatNumber', function () { diff --git a/x-pack/plugins/monitoring/public/components/alerts/alerts.js b/x-pack/plugins/monitoring/public/components/alerts/alerts.js index b3fc70e9ffd7d..59e838c449a3b 100644 --- a/x-pack/plugins/monitoring/public/components/alerts/alerts.js +++ b/x-pack/plugins/monitoring/public/components/alerts/alerts.js @@ -6,7 +6,7 @@ import React from 'react'; import { Legacy } from '../../legacy_shims'; -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; import { formatDateTimeLocal } from '../../../common/formatting'; import { formatTimestampToDuration } from '../../../common'; import { @@ -55,7 +55,7 @@ const getColumns = (timezone) => [ data-test-subj="alertIcon" aria-label={severityIcon.title} > - {capitalize(severityIcon.value)} + {upperFirst(severityIcon.value)} ); diff --git a/x-pack/plugins/monitoring/public/components/alerts/map_severity.js b/x-pack/plugins/monitoring/public/components/alerts/map_severity.js index b76f4eb5b75a7..8232e0a8908d0 100644 --- a/x-pack/plugins/monitoring/public/components/alerts/map_severity.js +++ b/x-pack/plugins/monitoring/public/components/alerts/map_severity.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; /** * Map the {@code severity} value to the associated alert level to be usable within the UI. @@ -68,7 +68,7 @@ export function mapSeverity(severity) { return { title: i18n.translate('xpack.monitoring.alerts.severityTitle', { defaultMessage: '{severity} severity alert', - values: { severity: capitalize(mapped.value) }, + values: { severity: upperFirst(mapped.value) }, }), ...mapped, }; diff --git a/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/lib/decorate_shards.js b/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/lib/decorate_shards.js index 9c5981585a8de..9acfce1e8c0b9 100644 --- a/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/lib/decorate_shards.js +++ b/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/lib/decorate_shards.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { capitalize, find, get, includes } from 'lodash'; +import { upperFirst, find, get, includes } from 'lodash'; import { i18n } from '@kbn/i18n'; export function decorateShards(shards, nodes) { @@ -40,7 +40,7 @@ export function decorateShards(shards, nodes) { ); } } - return capitalize(shard.state.toLowerCase()); + return upperFirst(shard.state.toLowerCase()); } return shards.map((shard) => { diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.js b/x-pack/plugins/monitoring/public/components/logs/logs.js index 0ab3683f4b72f..297ce49f1f148 100644 --- a/x-pack/plugins/monitoring/public/components/logs/logs.js +++ b/x-pack/plugins/monitoring/public/components/logs/logs.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import React, { PureComponent } from 'react'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import { Legacy } from '../../legacy_shims'; import { EuiBasicTable, EuiTitle, EuiSpacer, EuiText, EuiCallOut, EuiLink } from '@elastic/eui'; import { INFRA_SOURCE_ID } from '../../../common/constants'; @@ -59,7 +59,7 @@ const columns = [ field: 'type', name: columnTypeTitle, width: '10%', - render: (type) => capitalize(type), + render: (type) => upperFirst(type), }, { field: 'message', @@ -89,7 +89,7 @@ const clusterColumns = [ field: 'type', name: columnTypeTitle, width: '10%', - render: (type) => capitalize(type), + render: (type) => upperFirst(type), }, { field: 'message', diff --git a/x-pack/plugins/monitoring/public/lib/ajax_error_handler.tsx b/x-pack/plugins/monitoring/public/lib/ajax_error_handler.tsx index 14f838cff7a3c..12bd3a7575cf2 100644 --- a/x-pack/plugins/monitoring/public/lib/ajax_error_handler.tsx +++ b/x-pack/plugins/monitoring/public/lib/ajax_error_handler.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; -import { contains } from 'lodash'; +import { includes } from 'lodash'; import { EuiButton, EuiSpacer, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { Legacy } from '../legacy_shims'; @@ -38,7 +38,7 @@ export function ajaxErrorHandlersProvider() { if (err.status === 403) { // redirect to error message view history.replaceState(null, '', '#/access-denied'); - } else if (err.status === 404 && !contains(window.location.hash, 'no-data')) { + } else if (err.status === 404 && !includes(window.location.hash, 'no-data')) { // pass through if this is a 404 and we're already on the no-data page Legacy.shims.toastNotifications.addDanger({ title: toMountPoint( diff --git a/x-pack/plugins/monitoring/public/lib/form_validation.ts b/x-pack/plugins/monitoring/public/lib/form_validation.ts index 98d56f9790be4..2255022dcece0 100644 --- a/x-pack/plugins/monitoring/public/lib/form_validation.ts +++ b/x-pack/plugins/monitoring/public/lib/form_validation.ts @@ -5,13 +5,13 @@ */ import { i18n } from '@kbn/i18n'; -import { isString, isNumber, capitalize } from 'lodash'; +import { isString, isNumber, upperFirst } from 'lodash'; export function getRequiredFieldError(field: string): string { return i18n.translate('xpack.monitoring.alerts.migrate.manageAction.requiredFieldError', { defaultMessage: '{field} is a required field.', values: { - field: capitalize(field), + field: upperFirst(field), }, }); } diff --git a/x-pack/plugins/monitoring/public/lib/route_init.js b/x-pack/plugins/monitoring/public/lib/route_init.js index 9467535d556b0..163688d772022 100644 --- a/x-pack/plugins/monitoring/public/lib/route_init.js +++ b/x-pack/plugins/monitoring/public/lib/route_init.js @@ -13,7 +13,7 @@ export function routeInitProvider(Private, monitoringClusters, globalState, lice const ajaxErrorHandlers = Private(ajaxErrorHandlersProvider); function isOnPage(hash) { - return _.contains(window.location.hash, hash); + return _.includes(window.location.hash, hash); } /* diff --git a/x-pack/plugins/monitoring/public/lib/setup_mode.tsx b/x-pack/plugins/monitoring/public/lib/setup_mode.tsx index 5afb382b7cda8..2a4caf17515e1 100644 --- a/x-pack/plugins/monitoring/public/lib/setup_mode.tsx +++ b/x-pack/plugins/monitoring/public/lib/setup_mode.tsx @@ -6,14 +6,14 @@ import React from 'react'; import { render } from 'react-dom'; -import { get, contains } from 'lodash'; +import { get, includes } from 'lodash'; import { i18n } from '@kbn/i18n'; import { Legacy } from '../legacy_shims'; import { ajaxErrorHandlersProvider } from './ajax_error_handler'; import { SetupModeEnterButton } from '../components/setup_mode/enter_button'; function isOnPage(hash: string) { - return contains(window.location.hash, hash); + return includes(window.location.hash, hash); } interface IAngularState { diff --git a/x-pack/plugins/monitoring/public/services/license.js b/x-pack/plugins/monitoring/public/services/license.js index 341309004b110..caa21cd8ee8d7 100644 --- a/x-pack/plugins/monitoring/public/services/license.js +++ b/x-pack/plugins/monitoring/public/services/license.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { contains } from 'lodash'; +import { includes } from 'lodash'; import { ML_SUPPORTED_LICENSES } from '../../common/constants'; export function licenseProvider() { @@ -27,7 +27,7 @@ export function licenseProvider() { } mlIsSupported() { - return contains(ML_SUPPORTED_LICENSES, this.license.type); + return includes(ML_SUPPORTED_LICENSES, this.license.type); } doesExpire() { diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.js b/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.js index c3fbe266be6d6..cc3682ef764c8 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.js +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, capitalize } from 'lodash'; +import { get, upperFirst } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createQuery } from '../create_query'; import { getDiffCalculation } from '../beats/_beats_stats'; @@ -33,8 +33,8 @@ export function handleResponse(response, apmUuid) { transportAddress: get(stats, 'beat.host', null), version: get(stats, 'beat.version', null), name: get(stats, 'beat.name', null), - type: capitalize(get(stats, 'beat.type')) || null, - output: capitalize(get(stats, 'metrics.libbeat.output.type')) || null, + type: upperFirst(get(stats, 'beat.type')) || null, + output: upperFirst(get(stats, 'metrics.libbeat.output.type')) || null, configReloads: get(stats, 'metrics.libbeat.config.reloads', null), uptime: get(stats, 'metrics.beat.info.uptime.ms', null), eventsTotal: getDiffCalculation(eventsTotalLast, eventsTotalFirst), diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apms.js b/x-pack/plugins/monitoring/server/lib/apm/get_apms.js index 40070a6b0d0f2..19ed8298391d7 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apms.js +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apms.js @@ -5,7 +5,7 @@ */ import moment from 'moment'; -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createApmQuery } from './create_apm_query'; import { calculateRate } from '../calculate_rate'; @@ -59,8 +59,8 @@ export function handleResponse(response, start, end) { accum.beats.push({ uuid: get(stats, 'beat.uuid'), name: get(stats, 'beat.name'), - type: capitalize(get(stats, 'beat.type')), - output: capitalize(get(stats, 'metrics.libbeat.output.type')), + type: upperFirst(get(stats, 'beat.type')), + output: upperFirst(get(stats, 'metrics.libbeat.output.type')), total_events_rate: totalEventsRate, bytes_sent_rate: bytesSentRate, errors, diff --git a/x-pack/plugins/monitoring/server/lib/beats/_beats_stats.js b/x-pack/plugins/monitoring/server/lib/beats/_beats_stats.js index cf5a99525cc4c..9508260a64139 100644 --- a/x-pack/plugins/monitoring/server/lib/beats/_beats_stats.js +++ b/x-pack/plugins/monitoring/server/lib/beats/_beats_stats.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; export const getDiffCalculation = (max, min) => { // no need to test max >= 0, but min <= 0 which is normal for a derivative after restart @@ -105,7 +105,7 @@ export const beatsAggResponseHandler = (response) => { return [ ...types, { - type: capitalize(typeBucket.key), + type: upperFirst(typeBucket.key), count: get(typeBucket, 'uuids.buckets.length'), }, ]; diff --git a/x-pack/plugins/monitoring/server/lib/beats/get_beat_summary.js b/x-pack/plugins/monitoring/server/lib/beats/get_beat_summary.js index 06f6cf4f1a5e0..30ec728546ce9 100644 --- a/x-pack/plugins/monitoring/server/lib/beats/get_beat_summary.js +++ b/x-pack/plugins/monitoring/server/lib/beats/get_beat_summary.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createBeatsQuery } from './create_beats_query.js'; import { getDiffCalculation } from './_beats_stats'; @@ -33,8 +33,8 @@ export function handleResponse(response, beatUuid) { transportAddress: get(stats, 'beat.host', null), version: get(stats, 'beat.version', null), name: get(stats, 'beat.name', null), - type: capitalize(get(stats, 'beat.type')) || null, - output: capitalize(get(stats, 'metrics.libbeat.output.type')) || null, + type: upperFirst(get(stats, 'beat.type')) || null, + output: upperFirst(get(stats, 'metrics.libbeat.output.type')) || null, configReloads: get(stats, 'metrics.libbeat.config.reloads', null), uptime: get(stats, 'metrics.beat.info.uptime.ms', null), eventsTotal: getDiffCalculation(eventsTotalLast, eventsTotalFirst), diff --git a/x-pack/plugins/monitoring/server/lib/beats/get_beats.js b/x-pack/plugins/monitoring/server/lib/beats/get_beats.js index ef878e4892557..a5d43d1da7ebc 100644 --- a/x-pack/plugins/monitoring/server/lib/beats/get_beats.js +++ b/x-pack/plugins/monitoring/server/lib/beats/get_beats.js @@ -5,7 +5,7 @@ */ import moment from 'moment'; -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createBeatsQuery } from './create_beats_query'; import { calculateRate } from '../calculate_rate'; @@ -59,8 +59,8 @@ export function handleResponse(response, start, end) { accum.beats.push({ uuid: get(stats, 'beat.uuid'), name: get(stats, 'beat.name'), - type: capitalize(get(stats, 'beat.type')), - output: capitalize(get(stats, 'metrics.libbeat.output.type')), + type: upperFirst(get(stats, 'beat.type')), + output: upperFirst(get(stats, 'metrics.libbeat.output.type')), total_events_rate: totalEventsRate, bytes_sent_rate: bytesSentRate, errors, diff --git a/x-pack/plugins/monitoring/server/lib/beats/get_latest_stats.js b/x-pack/plugins/monitoring/server/lib/beats/get_latest_stats.js index f630903d4e29d..10a75b9d1ca85 100644 --- a/x-pack/plugins/monitoring/server/lib/beats/get_latest_stats.js +++ b/x-pack/plugins/monitoring/server/lib/beats/get_latest_stats.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { capitalize, get } from 'lodash'; +import { upperFirst, get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createBeatsQuery } from './create_beats_query'; @@ -47,7 +47,7 @@ export function handleResponse(response) { return [ ...accum, { - type: capitalize(current.key), + type: upperFirst(current.key), count: get(current, 'uuids.buckets.length'), }, ]; diff --git a/x-pack/plugins/monitoring/server/lib/elasticsearch/get_ml_jobs.js b/x-pack/plugins/monitoring/server/lib/elasticsearch/get_ml_jobs.js index c6575393590f0..74d4bd6d2b5df 100644 --- a/x-pack/plugins/monitoring/server/lib/elasticsearch/get_ml_jobs.js +++ b/x-pack/plugins/monitoring/server/lib/elasticsearch/get_ml_jobs.js @@ -5,7 +5,7 @@ */ import Bluebird from 'bluebird'; -import { contains, get } from 'lodash'; +import { includes, get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { createQuery } from '../create_query'; import { ElasticsearchMetric } from '../metrics'; @@ -59,7 +59,7 @@ export function getMlJobs(req, esIndexPattern) { export function getMlJobsForCluster(req, esIndexPattern, cluster) { const license = get(cluster, 'license', {}); - if (license.status === 'active' && contains(ML_SUPPORTED_LICENSES, license.type)) { + if (license.status === 'active' && includes(ML_SUPPORTED_LICENSES, license.type)) { // ML is supported const start = req.payload.timeRange.min; // no wrapping in moment :) const end = req.payload.timeRange.max; diff --git a/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/map_nodes_metrics.js b/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/map_nodes_metrics.js index 4e5e439ff90d5..d1a7aec2f153f 100644 --- a/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/map_nodes_metrics.js +++ b/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/map_nodes_metrics.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, pluck, min, max, last } from 'lodash'; +import { get, map, min, max, last } from 'lodash'; import { filterPartialBuckets } from '../../../filter_partial_buckets'; import { metrics } from '../../../metrics'; @@ -76,14 +76,14 @@ function reduceMetric(metricName, metricBuckets, { min: startTime, max: endTime, /* it's possible that no data exists for the type of metric. For example, * node_cgroup_throttled data could be completely null if there is no cgroup * throttling. */ - const allValues = pluck(mappedData, 'y'); + const allValues = map(mappedData, 'y'); if (allValues.join(',') === '') { return; // no data exists for this type of metric } - const minVal = min(pluck(mappedData, 'y')); - const maxVal = max(pluck(mappedData, 'y')); - const lastVal = last(pluck(mappedData, 'y')); + const minVal = min(map(mappedData, 'y')); + const maxVal = max(map(mappedData, 'y')); + const lastVal = last(map(mappedData, 'y')); const slope = calcSlope(mappedData) > 0 ? 1 : -1; // no need for the entire precision, it's just an up/down arrow return { diff --git a/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/sort_nodes.js b/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/sort_nodes.js index 8782875775530..39855e7f10eaf 100644 --- a/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/sort_nodes.js +++ b/x-pack/plugins/monitoring/server/lib/elasticsearch/nodes/get_nodes/sort_nodes.js @@ -3,12 +3,12 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; export function sortNodes(nodes, sort) { if (!sort || !sort.field) { return nodes; } - return sortByOrder(nodes, (node) => node[sort.field], sort.direction); + return orderBy(nodes, (node) => node[sort.field], sort.direction); } diff --git a/x-pack/plugins/monitoring/server/lib/logstash/sort_pipelines.js b/x-pack/plugins/monitoring/server/lib/logstash/sort_pipelines.js index 2a5c15ece4b40..e4a36fdf35daf 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/sort_pipelines.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/sort_pipelines.js @@ -3,12 +3,12 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; export function sortPipelines(pipelines, sort) { if (!sort) { return pipelines; } - return sortByOrder(pipelines, (pipeline) => pipeline[sort.field], sort.direction); + return orderBy(pipelines, (pipeline) => pipeline[sort.field], sort.direction); } diff --git a/x-pack/plugins/oss_telemetry/server/lib/tasks/visualizations/task_runner.ts b/x-pack/plugins/oss_telemetry/server/lib/tasks/visualizations/task_runner.ts index d7a708173d3ad..27913fafe3257 100644 --- a/x-pack/plugins/oss_telemetry/server/lib/tasks/visualizations/task_runner.ts +++ b/x-pack/plugins/oss_telemetry/server/lib/tasks/visualizations/task_runner.ts @@ -40,7 +40,7 @@ async function getStats(callCluster: LegacyAPICaller, index: string) { }, }; const esResponse = await callCluster('search', searchParams); - const size = _.get(esResponse, 'hits.hits.length'); + const size = _.get(esResponse, 'hits.hits.length') as number; if (size < 1) { return; } diff --git a/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx b/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx index 37441edce0af8..d0800c7b24fef 100644 --- a/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx +++ b/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx @@ -5,6 +5,7 @@ */ import dateMath from '@elastic/datemath'; import { i18n } from '@kbn/i18n'; +import _ from 'lodash'; import moment from 'moment-timezone'; import { CoreSetup } from 'src/core/public'; import { Action, IncompatibleActionError } from '../../../../../src/plugins/ui_actions/public'; diff --git a/x-pack/plugins/reporting/server/browsers/chromium/driver/chromium_driver.ts b/x-pack/plugins/reporting/server/browsers/chromium/driver/chromium_driver.ts index 898b123e976fd..bca9496bc9add 100644 --- a/x-pack/plugins/reporting/server/browsers/chromium/driver/chromium_driver.ts +++ b/x-pack/plugins/reporting/server/browsers/chromium/driver/chromium_driver.ts @@ -5,7 +5,7 @@ */ import { i18n } from '@kbn/i18n'; -import { map, trunc } from 'lodash'; +import { map, truncate } from 'lodash'; import open from 'opn'; import { ElementHandle, EvaluateFn, Page, Response, SerializableOrJSHandle } from 'puppeteer'; import { parse as parseUrl } from 'url'; @@ -70,7 +70,7 @@ export class HeadlessChromiumDriver { } private truncateUrl(url: string) { - return trunc(url, { + return truncate(url, { length: 100, omission: '[truncated]', }); diff --git a/x-pack/plugins/reporting/server/config/create_config.ts b/x-pack/plugins/reporting/server/config/create_config.ts index 5c66bd599dd9a..3c892fe6120af 100644 --- a/x-pack/plugins/reporting/server/config/create_config.ts +++ b/x-pack/plugins/reporting/server/config/create_config.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n/'; import crypto from 'crypto'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import { Observable } from 'rxjs'; import { map, mergeMap } from 'rxjs/operators'; import { CoreSetup } from 'src/core/server'; @@ -84,7 +84,7 @@ export function createConfig$( // disableSandbox was not set by user, apply default for OS const { os, disableSandbox } = await getDefaultChromiumSandboxDisabled(); - const osName = [os.os, os.dist, os.release].filter(Boolean).map(capitalize).join(' '); + const osName = [os.os, os.dist, os.release].filter(Boolean).map(upperFirst).join(' '); logger.debug( i18n.translate('xpack.reporting.serverConfig.osDetected', { diff --git a/x-pack/plugins/reporting/server/export_types/common/execute_job/omit_blacklisted_headers.ts b/x-pack/plugins/reporting/server/export_types/common/execute_job/omit_blacklisted_headers.ts index db7137c30513b..305fb6bab5478 100644 --- a/x-pack/plugins/reporting/server/export_types/common/execute_job/omit_blacklisted_headers.ts +++ b/x-pack/plugins/reporting/server/export_types/common/execute_job/omit_blacklisted_headers.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { omit } from 'lodash'; +import { omitBy } from 'lodash'; import { KBN_SCREENSHOT_HEADER_BLACKLIST, KBN_SCREENSHOT_HEADER_BLACKLIST_STARTS_WITH_PATTERN, @@ -16,7 +16,7 @@ export const omitBlacklistedHeaders = ({ job: ScheduledTaskParamsType; decryptedHeaders: Record; }) => { - const filteredHeaders: Record = omit( + const filteredHeaders: Record = omitBy( decryptedHeaders, (_value, header: string) => header && diff --git a/x-pack/plugins/reporting/server/export_types/csv/server/lib/flatten_hit.ts b/x-pack/plugins/reporting/server/export_types/csv/server/lib/flatten_hit.ts index a4c634439ec45..acfae5138154c 100644 --- a/x-pack/plugins/reporting/server/export_types/csv/server/lib/flatten_hit.ts +++ b/x-pack/plugins/reporting/server/export_types/csv/server/lib/flatten_hit.ts @@ -30,7 +30,7 @@ export function createFlattenHit( } else if (_.isArray(flat[key])) { flat[key].push(val); } else { - flat[key] = [flat[key], val]; + flat[key] = [flat[key], val] as any; } return; } @@ -49,7 +49,7 @@ export function createFlattenHit( const flattenFields = (flat: FlatHits, hitFields: string[]) => { _.forOwn(hitFields, (val, key) => { if (key) { - if (key[0] === '_' && !_.contains(metaFields, key)) return; + if (key[0] === '_' && !_.includes(metaFields, key)) return; flat[key] = _.isArray(val) && val.length === 1 ? val[0] : val; } }); diff --git a/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts b/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts index 2a6d08c0740dd..213bea3bc3eec 100644 --- a/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts +++ b/x-pack/plugins/reporting/server/usage/get_reporting_usage.ts @@ -13,11 +13,9 @@ import { decorateRangeStats } from './decorate_range_stats'; import { getExportTypesHandler } from './get_export_type_handler'; import { AggregationResultBuckets, - AppCounts, FeatureAvailabilityMap, JobTypes, KeyCountBucket, - LayoutCounts, RangeStats, ReportingUsageType, SearchResponse, @@ -75,21 +73,21 @@ function getAggStats(aggs: AggregationResultBuckets): Partial { // merge pdf stats into pdf jobtype key const pdfJobs = jobTypes[PRINTABLE_PDF_JOBTYPE]; if (pdfJobs) { - const pdfAppBuckets = get(aggs[OBJECT_TYPES_KEY], '.pdf.buckets', []); - const pdfLayoutBuckets = get(aggs[LAYOUT_TYPES_KEY], '.pdf.buckets', []); - pdfJobs.app = getKeyCount(pdfAppBuckets); - pdfJobs.layout = getKeyCount(pdfLayoutBuckets); + const pdfAppBuckets = get(aggs[OBJECT_TYPES_KEY], 'pdf.buckets', []); + const pdfLayoutBuckets = get(aggs[LAYOUT_TYPES_KEY], 'pdf.buckets', []); + pdfJobs.app = getKeyCount(pdfAppBuckets); + pdfJobs.layout = getKeyCount(pdfLayoutBuckets); } const all = aggs.doc_count; let statusTypes = {}; - const statusBuckets = get(aggs[STATUS_TYPES_KEY], 'buckets', []); + const statusBuckets = get(aggs[STATUS_TYPES_KEY], 'buckets', []); if (statusBuckets) { statusTypes = getKeyCount(statusBuckets); } let statusByApp = {}; - const statusAppBuckets = get(aggs[STATUS_BY_APP_KEY], 'buckets', []); + const statusAppBuckets = get(aggs[STATUS_BY_APP_KEY], 'buckets', []); if (statusAppBuckets) { statusByApp = getAppStatuses(statusAppBuckets); } @@ -97,18 +95,16 @@ function getAggStats(aggs: AggregationResultBuckets): Partial { return { _all: all, status: statusTypes, statuses: statusByApp, ...jobTypes }; } -type SearchAggregation = SearchResponse['aggregations']['ranges']['buckets']; - type RangeStatSets = Partial & { last7Days: Partial; }; async function handleResponse(response: SearchResponse): Promise> { - const buckets = get(response, 'aggregations.ranges.buckets'); + const buckets = get(response, 'aggregations.ranges.buckets'); if (!buckets) { return {}; } - const { last7Days, all } = buckets; + const { last7Days, all } = buckets as any; const last7DaysUsage = last7Days ? getAggStats(last7Days) : {}; const allUsage = all ? getAggStats(all) : {}; diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js b/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js index 151eff31f8a01..8c326c3f8a788 100644 --- a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js +++ b/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js @@ -6,10 +6,7 @@ import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; -import mapValues from 'lodash/object/mapValues'; -import cloneDeep from 'lodash/lang/cloneDeep'; -import debounce from 'lodash/function/debounce'; -import first from 'lodash/array/first'; +import { cloneDeep, debounce, first, mapValues } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js b/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js index d70fbb89c065d..df9b63bc5fa3d 100644 --- a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js +++ b/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js @@ -8,7 +8,7 @@ import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import get from 'lodash/object/get'; +import { get } from 'lodash'; import { EuiButtonEmpty, diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js b/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js index 3a61518a850e9..56225639777cd 100644 --- a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js +++ b/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import cloneDeep from 'lodash/lang/cloneDeep'; -import get from 'lodash/object/get'; -import pick from 'lodash/object/pick'; +import { cloneDeep, get, pick } from 'lodash'; import { WEEK } from '../../../../../../../../src/plugins/es_ui_shared/public'; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js index aa95bbbd9cf0d..3ebc7e5c8192c 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js @@ -9,7 +9,10 @@ import { mockHttpRequest, pageHelpers, nextTick } from './helpers'; import { JOB_TO_CLONE, JOB_CLONE_INDEX_PATTERN_CHECK } from './helpers/constants'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobClone; const { diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js index 8791b5173b893..90f53a91e425a 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js @@ -10,7 +10,10 @@ import { setHttp } from '../../crud_app/services'; import { mockHttpRequest, pageHelpers } from './helpers'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobCreate; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js index 50898f94586fc..549f6ab063746 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js @@ -8,7 +8,10 @@ import { setHttp } from '../../crud_app/services'; import { mockHttpRequest, pageHelpers } from './helpers'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobCreate; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js index a1edf87c33bad..6cf33334d9281 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js @@ -17,7 +17,10 @@ import { setHttp } from '../../crud_app/services'; import { mockHttpRequest, pageHelpers } from './helpers'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobCreate; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js index 7f58482d35b19..d75c7b585994c 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js @@ -8,7 +8,10 @@ import { setHttp } from '../../crud_app/services'; import { mockHttpRequest, pageHelpers } from './helpers'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobCreate; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js index 59118ef6f8ec3..3dbbe70bfc560 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js @@ -10,7 +10,10 @@ import { setHttp } from '../../crud_app/services'; import { JOBS } from './helpers/constants'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); jest.mock('../../kibana_services', () => { const services = require.requireActual('../../kibana_services'); diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js index f21fc2c12a007..9434747028e53 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js @@ -8,7 +8,10 @@ import { setHttp } from '../../crud_app/services'; import { pageHelpers, mockHttpRequest } from './helpers'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); const { setup } = pageHelpers.jobCreate; diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js b/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js index 53a3af38f3235..76be39a2c0e09 100644 --- a/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js +++ b/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js @@ -10,7 +10,10 @@ import { getRouter } from '../../crud_app/services/routing'; import { setHttp } from '../../crud_app/services'; import { coreMock } from '../../../../../../src/core/public/mocks'; -jest.mock('lodash/function/debounce', () => (fn) => fn); +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (fn) => fn, +})); jest.mock('../../kibana_services', () => { const services = require.requireActual('../../kibana_services'); diff --git a/x-pack/plugins/rollup/server/collectors/register.ts b/x-pack/plugins/rollup/server/collectors/register.ts index c679098bc05be..35c40e42efc19 100644 --- a/x-pack/plugins/rollup/server/collectors/register.ts +++ b/x-pack/plugins/rollup/server/collectors/register.ts @@ -48,7 +48,7 @@ async function fetchRollupIndexPatterns(kibanaIndex: string, callCluster: CallCl const esResponse = await callCluster('search', searchParams); - return get(esResponse, 'hits.hits', []).map((indexPattern) => { + return get(esResponse, 'hits.hits', []).map((indexPattern: any) => { const { _id: savedObjectId } = indexPattern; return getIdFromSavedObjectId(savedObjectId); }); @@ -81,7 +81,7 @@ async function fetchRollupSavedSearches( const savedSearches = get(esResponse, 'hits.hits', []); // Filter for ones with rollup index patterns. - return savedSearches.reduce((rollupSavedSearches, savedSearch) => { + return savedSearches.reduce((rollupSavedSearches: any, savedSearch: any) => { const { _id: savedObjectId, _source: { @@ -136,7 +136,7 @@ async function fetchRollupVisualizations( let rollupVisualizations = 0; let rollupVisualizationsFromSavedSearches = 0; - visualizations.forEach((visualization) => { + visualizations.forEach((visualization: any) => { const { _source: { visualization: { @@ -151,7 +151,7 @@ async function fetchRollupVisualizations( if (savedSearchRefName) { // This visualization depends upon a saved search. - const savedSearch = references.find((ref) => ref.name === savedSearchRefName); + const savedSearch = references.find((ref: any) => ref.name === savedSearchRefName); if (rollupSavedSearchesToFlagMap[savedSearch.id]) { rollupVisualizations++; rollupVisualizationsFromSavedSearches++; diff --git a/x-pack/plugins/rollup/server/lib/search_strategies/rollup_search_strategy.ts b/x-pack/plugins/rollup/server/lib/search_strategies/rollup_search_strategy.ts index 815fe163411b3..885836780f1a9 100644 --- a/x-pack/plugins/rollup/server/lib/search_strategies/rollup_search_strategy.ts +++ b/x-pack/plugins/rollup/server/lib/search_strategies/rollup_search_strategy.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { indexBy, isString } from 'lodash'; +import { keyBy, isString } from 'lodash'; import { KibanaRequest } from 'src/core/server'; import { CallWithRequestFactoryShim } from '../../types'; @@ -74,7 +74,7 @@ export const getRollupSearchStrategy = ( }: { fieldsCapabilities: { [key: string]: any }; rollupIndex: string } ) { const fields = await super.getFieldsForWildcard(req, indexPattern); - const fieldsFromFieldCapsApi = indexBy(fields, 'name'); + const fieldsFromFieldCapsApi = keyBy(fields, 'name'); const rollupIndexCapabilities = fieldsCapabilities[rollupIndex].aggs; return mergeCapabilitiesWithFields(rollupIndexCapabilities, fieldsFromFieldCapsApi); diff --git a/x-pack/plugins/rollup/server/routes/api/index_patterns/register_fields_for_wildcard_route.ts b/x-pack/plugins/rollup/server/routes/api/index_patterns/register_fields_for_wildcard_route.ts index 546d9d628277f..250947d72c5fa 100644 --- a/x-pack/plugins/rollup/server/routes/api/index_patterns/register_fields_for_wildcard_route.ts +++ b/x-pack/plugins/rollup/server/routes/api/index_patterns/register_fields_for_wildcard_route.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; import { schema } from '@kbn/config-schema'; import { Field } from '../../../lib/merge_capabilities_with_fields'; import { RouteDependencies } from '../../../types'; @@ -111,7 +111,7 @@ export const registerFieldsForWildcardRoute = ({ const parsedParams = JSON.parse(params); const rollupIndex = parsedParams.rollup_index; const rollupFields: Field[] = []; - const fieldsFromFieldCapsApi: { [key: string]: any } = indexBy(fields, 'name'); + const fieldsFromFieldCapsApi: { [key: string]: any } = keyBy(fields, 'name'); const rollupIndexCapabilities = getCapabilitiesForRollupIndices( await context.rollup!.client.callAsCurrentUser('rollup.rollupIndexCapabilities', { indexPattern: rollupIndex, diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts index f5daa6b38de48..e4dded600dcf2 100644 --- a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts +++ b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import cloneDeep from 'lodash.clonedeep'; +import { cloneDeep } from 'lodash'; import { flow } from 'fp-ts/lib/function'; import { Targets, Shard, ShardSerialized } from '../../types'; import { calcTimes, initTree, normalizeIndices, sortIndices } from './unsafe_utils'; @@ -108,7 +108,7 @@ export const normalize = (target: Targets) => (data: IndexMap) => { export const initDataFor = (target: Targets) => flow( - cloneDeep, + cloneDeep as any, initShards, calculateShardValues(target), initIndices, diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts index b023f1b365c06..0fb0522d449bd 100644 --- a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts +++ b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts @@ -122,10 +122,10 @@ export function normalizeIndices(indices: IndexMap, target: Targets) { let sortQueryComponents; if (target === 'searches') { sortQueryComponents = (a: Shard, b: Shard) => { - const aTime = _.sum(a.searches!, (search) => { + const aTime = _.sumBy(a.searches!, (search: any) => { return search.treeRoot!.time; }); - const bTime = _.sum(b.searches!, (search) => { + const bTime = _.sumBy(b.searches!, (search: any) => { return search.treeRoot!.time; }); @@ -133,10 +133,10 @@ export function normalizeIndices(indices: IndexMap, target: Targets) { }; } else if (target === 'aggregations') { sortQueryComponents = (a: Shard, b: Shard) => { - const aTime = _.sum(a.aggregations!, (agg) => { + const aTime = _.sumBy(a.aggregations!, (agg: any) => { return agg.treeRoot!.time; }); - const bTime = _.sum(b.aggregations!, (agg) => { + const bTime = _.sumBy(b.aggregations!, (agg: any) => { return agg.treeRoot!.time; }); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/change_all_privileges.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/change_all_privileges.tsx index 10aa59083dff6..14375587c8497 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/change_all_privileges.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/change_all_privileges.tsx @@ -51,7 +51,7 @@ export class ChangeAllPrivilegesControl extends Component { }} disabled={this.props.disabled} > - {_.capitalize(privilege.id)} + {_.upperFirst(privilege.id)} ); }); @@ -65,7 +65,7 @@ export class ChangeAllPrivilegesControl extends Component { }} disabled={this.props.disabled} > - {_.capitalize(NO_PRIVILEGE_VALUE)} + {_.upperFirst(NO_PRIVILEGE_VALUE)} ); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx index 38e4390a2856a..a371a9ec9ba1e 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx @@ -15,7 +15,6 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import _ from 'lodash'; import React, { Component } from 'react'; import { Role } from '../../../../../../../common/model'; import { ChangeAllPrivilegesControl } from './change_all_privileges'; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_display.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_display.tsx index 7b5d8d8c1ed27..204fb512abcff 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_display.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_display.tsx @@ -40,7 +40,7 @@ function getDisplayValue(privilege: string | string[] | undefined) { if (isPrivilegeMissing) { displayValue = ; } else { - displayValue = privileges.map((p) => _.capitalize(p)).join(', '); + displayValue = privileges.map((p) => _.upperFirst(p)).join(', '); } return displayValue; diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_space_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_space_table.tsx index 585c07c2e834f..64b7fe3e2e3a9 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_space_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/space_aware_privilege_section/privilege_space_table.tsx @@ -20,7 +20,6 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import _ from 'lodash'; import React, { Component } from 'react'; import { Space, getSpaceColor } from '../../../../../../../../spaces/public'; import { FeaturesPrivileges, Role, copyRole } from '../../../../../../../common/model'; diff --git a/x-pack/plugins/security/public/management/roles/model/kibana_privilege.ts b/x-pack/plugins/security/public/management/roles/model/kibana_privilege.ts index f5c85d3d92be2..cc9e74805040c 100644 --- a/x-pack/plugins/security/public/management/roles/model/kibana_privilege.ts +++ b/x-pack/plugins/security/public/management/roles/model/kibana_privilege.ts @@ -10,7 +10,7 @@ export class KibanaPrivilege { constructor(public readonly id: string, public readonly actions: string[] = []) {} public get name() { - return _.capitalize(this.id); + return _.upperFirst(this.id); } public grantsPrivilege(candidatePrivilege: KibanaPrivilege) { diff --git a/x-pack/plugins/security/public/management/users/components/change_password_form/change_password_form.tsx b/x-pack/plugins/security/public/management/users/components/change_password_form/change_password_form.tsx index 7a97794303558..296a8f6c8693f 100644 --- a/x-pack/plugins/security/public/management/users/components/change_password_form/change_password_form.tsx +++ b/x-pack/plugins/security/public/management/users/components/change_password_form/change_password_form.tsx @@ -12,6 +12,7 @@ import { EuiForm, EuiFormRow, } from '@elastic/eui'; +import _ from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { ChangeEvent, Component } from 'react'; diff --git a/x-pack/plugins/security/server/authorization/register_privileges_with_cluster.ts b/x-pack/plugins/security/server/authorization/register_privileges_with_cluster.ts index 448b7b7e7ef48..8b5c119d59494 100644 --- a/x-pack/plugins/security/server/authorization/register_privileges_with_cluster.ts +++ b/x-pack/plugins/security/server/authorization/register_privileges_with_cluster.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { isEqual, difference } from 'lodash'; +import { isEqual, isEqualWith, difference } from 'lodash'; import { ILegacyClusterClient, Logger } from '../../../../../src/core/server'; import { serializePrivileges } from './privileges_serializer'; @@ -22,7 +22,7 @@ export async function registerPrivilegesWithCluster( ) => { // when comparing privileges, the order of the actions doesn't matter, lodash's isEqual // doesn't know how to compare Sets - return isEqual(existingPrivileges, expectedPrivileges, (value, other, key) => { + return isEqualWith(existingPrivileges, expectedPrivileges, (value, other, key) => { if (key === 'actions' && Array.isArray(value) && Array.isArray(other)) { // Array.sort() is in-place, and we don't want to be modifying the actual order // of the arrays permanently, and there's potential they're frozen, so we're copying diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json index 1ce5243bf7950..703ef6584f164 100644 --- a/x-pack/plugins/security_solution/package.json +++ b/x-pack/plugins/security_solution/package.json @@ -13,13 +13,11 @@ "test:generate": "ts-node --project scripts/endpoint/cli_tsconfig.json scripts/endpoint/resolver_generator.ts" }, "devDependencies": { - "@types/lodash": "^4.14.110", "@types/md5": "^2.2.0" }, "dependencies": { "@types/rbush": "^3.0.0", "@types/seedrandom": ">=2.0.0 <4.0.0", - "lodash": "^4.17.15", "querystring": "^0.2.0", "rbush": "^3.0.1", "redux-devtools-extension": "^2.13.8" diff --git a/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js b/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js index 344d0f0e5131a..5c31b3fad685a 100644 --- a/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js +++ b/x-pack/plugins/security_solution/scripts/extract_tactics_techniques_mitre.js @@ -9,6 +9,7 @@ require('../../../../src/setup_node_env'); const fs = require('fs'); // eslint-disable-next-line import/no-extraneous-dependencies const fetch = require('node-fetch'); +// eslint-disable-next-line import/no-extraneous-dependencies const { camelCase } = require('lodash'); const { resolve } = require('path'); diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx b/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx index 739c72fe03a6f..3b18af7cebbf3 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx @@ -6,7 +6,7 @@ import React, { useState, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { sortByOrder } from 'lodash'; +import { orderBy } from 'lodash'; import { EuiBasicTable, EuiButtonIcon, EuiHealth } from '@elastic/eui'; import { RIGHT_ALIGNMENT } from '@elastic/eui/lib/services'; @@ -58,7 +58,7 @@ export const RestoreTable: React.FunctionComponent = React.memo(({ restor } = getSorting(); const { pageIndex, pageSize } = getPagination(); - const sortedRestores = sortByOrder(newRestoresList, [field], [direction]); + const sortedRestores = orderBy(newRestoresList, [field], [direction]); return sortedRestores.slice(pageIndex * pageSize, (pageIndex + 1) * pageSize); }; diff --git a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts index 4c9f62503a21b..87c2fee4ea9bf 100644 --- a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts +++ b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts @@ -18,7 +18,7 @@ import { createLicensedRouteHandler } from '../../lib'; type SavedObjectIdentifier = Pick; const areObjectsUnique = (objects: SavedObjectIdentifier[]) => - _.uniq(objects, (o: SavedObjectIdentifier) => `${o.type}:${o.id}`).length === objects.length; + _.uniqBy(objects, (o: SavedObjectIdentifier) => `${o.type}:${o.id}`).length === objects.length; export function initCopyToSpacesApi(deps: ExternalRouteDeps) { const { externalRouter, spacesService, getImportExportObjectLimit, getStartServices } = deps; diff --git a/x-pack/plugins/task_manager/server/lib/get_template_version.ts b/x-pack/plugins/task_manager/server/lib/get_template_version.ts index eac9d09685a42..07a9076359f0c 100644 --- a/x-pack/plugins/task_manager/server/lib/get_template_version.ts +++ b/x-pack/plugins/task_manager/server/lib/get_template_version.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { padLeft } from 'lodash'; +import { padStart } from 'lodash'; /* * The logic for ID is: XXYYZZAA, where XX is major version, YY is minor @@ -27,7 +27,7 @@ export function getTemplateVersion(versionStr: string): number { const padded = splitted.map((v: string) => { const vMatches = v.match(/\d+/); if (vMatches) { - return padLeft(vMatches[0], 2, '0'); + return padStart(vMatches[0], 2, '0'); } return '00'; }); @@ -39,13 +39,13 @@ export function getTemplateVersion(versionStr: string): number { const matches = minorStr.match(/alpha(?\d+)/); if (matches != null && matches.groups != null) { const alphaVerInt = parseInt(matches.groups.alpha, 10); // alpha build indicator - buildV = padLeft(`${alphaVerInt}`, 2, '0'); + buildV = padStart(`${alphaVerInt}`, 2, '0'); } } else if (minorStr.match('beta')) { const matches = minorStr.match(/beta(?\d+)/); if (matches != null && matches.groups != null) { const alphaVerInt = parseInt(matches.groups.beta, 10) + 25; // beta build indicator - buildV = padLeft(`${alphaVerInt}`, 2, '0'); + buildV = padStart(`${alphaVerInt}`, 2, '0'); } } else { buildV = '99'; // release build indicator diff --git a/x-pack/plugins/task_manager/server/task_pool.ts b/x-pack/plugins/task_manager/server/task_pool.ts index 17292adad3eb4..92374908c60f7 100644 --- a/x-pack/plugins/task_manager/server/task_pool.ts +++ b/x-pack/plugins/task_manager/server/task_pool.ts @@ -10,7 +10,7 @@ */ import moment, { Duration } from 'moment'; import { performance } from 'perf_hooks'; -import { padLeft } from 'lodash'; +import { padStart } from 'lodash'; import { Logger } from './types'; import { TaskRunner } from './task_runner'; import { isTaskSavedObjectNotFoundError } from './lib/is_task_not_found_error'; @@ -182,7 +182,7 @@ function partitionListByCount(list: T[], count: number): [T[], T[]] { function durationAsString(duration: Duration): string { const [m, s] = [duration.minutes(), duration.seconds()].map((value) => - padLeft(`${value}`, 2, '0') + padStart(`${value}`, 2, '0') ); return `${m}m ${s}s`; } diff --git a/x-pack/plugins/task_manager/server/task_runner.ts b/x-pack/plugins/task_manager/server/task_runner.ts index 7a9fa0c45e15f..4c690a5675f61 100644 --- a/x-pack/plugins/task_manager/server/task_runner.ts +++ b/x-pack/plugins/task_manager/server/task_runner.ts @@ -359,7 +359,7 @@ export class TaskManagerRunner implements TaskRunner { await this.bufferedTaskStore.update( defaults( { - ...fieldUpdates, + ...(fieldUpdates as Partial), // reset fields that track the lifecycle of the concluded `task run` startedAt: null, retryAt: null, diff --git a/x-pack/plugins/task_manager/server/task_store.test.ts b/x-pack/plugins/task_manager/server/task_store.test.ts index fec72c317225b..771b4e2d7d9cb 100644 --- a/x-pack/plugins/task_manager/server/task_store.test.ts +++ b/x-pack/plugins/task_manager/server/task_store.test.ts @@ -853,7 +853,7 @@ if (doc['task.runAt'].size()!=0) { type, attributes: { ..._.omit(task, 'id'), - ..._.mapValues(_.pick(task, 'params', 'state'), (value) => JSON.stringify(value)), + ..._.mapValues(_.pick(task, ['params', 'state']), (value) => JSON.stringify(value)), }, references: [], version: '123', @@ -904,7 +904,7 @@ if (doc['task.runAt'].size()!=0) { type, attributes: { ..._.omit(task, 'id'), - ..._.mapValues(_.pick(task, 'params', 'state'), (value) => JSON.stringify(value)), + ..._.mapValues(_.pick(task, ['params', 'state']), (value) => JSON.stringify(value)), }, references: [], version: '123', diff --git a/x-pack/plugins/task_manager/server/task_store.ts b/x-pack/plugins/task_manager/server/task_store.ts index c63f4ac72ed20..4a691e17011e8 100644 --- a/x-pack/plugins/task_manager/server/task_store.ts +++ b/x-pack/plugins/task_manager/server/task_store.ts @@ -429,7 +429,7 @@ function taskInstanceToAttributes(doc: TaskInstance): SerializedConcreteTaskInst retryAt: (doc.retryAt && doc.retryAt.toISOString()) || null, runAt: (doc.runAt || new Date()).toISOString(), status: (doc as ConcreteTaskInstance).status || 'idle', - }; + } as SerializedConcreteTaskInstance; } export function savedObjectToConcreteTaskInstance( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/check_action_type_enabled.tsx b/x-pack/plugins/triggers_actions_ui/public/application/lib/check_action_type_enabled.tsx index 463d170df2296..838b684cc10e8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/check_action_type_enabled.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/check_action_type_enabled.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiCard, EuiLink } from '@elastic/eui'; @@ -30,7 +30,7 @@ const getLicenseCheckResult = (actionType: ActionType) => { { defaultMessage: 'This connector requires a {minimumLicenseRequired} license.', values: { - minimumLicenseRequired: capitalize(actionType.minimumLicenseRequired), + minimumLicenseRequired: upperFirst(actionType.minimumLicenseRequired), }, } ), @@ -42,7 +42,7 @@ const getLicenseCheckResult = (actionType: ActionType) => { { defaultMessage: 'This feature requires a {minimumLicenseRequired} license.', values: { - minimumLicenseRequired: capitalize(actionType.minimumLicenseRequired), + minimumLicenseRequired: upperFirst(actionType.minimumLicenseRequired), }, } )} 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 3a25417f7db4c..66a7ac25d4a70 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 @@ -5,7 +5,7 @@ */ import React, { useState, Fragment } from 'react'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; import { useHistory } from 'react-router-dom'; import { EuiPageBody, @@ -72,7 +72,7 @@ export const AlertDetails: React.FunctionComponent = ({ } = useAppDependencies(); const canSave = hasSaveAlertsCapability(capabilities); - const actionTypesByTypeId = indexBy(actionTypes, 'id'); + const actionTypesByTypeId = keyBy(actionTypes, 'id'); const hasEditButton = canSave && alertTypeRegistry.has(alert.alertTypeId) ? !alertTypeRegistry.get(alert.alertTypeId).requiresAppContext 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 9deeeb96124c8..799886d264547 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 @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import { EuiBasicTable, EuiHealth, EuiSpacer, EuiSwitch } from '@elastic/eui'; // @ts-ignore import { RIGHT_ALIGNMENT, CENTER_ALIGNMENT } from '@elastic/eui/lib/services'; -import { padLeft, difference, chunk } from 'lodash'; +import { padStart, difference, chunk } from 'lodash'; import { Alert, AlertTaskState, RawAlertInstance, Pagination } from '../../../../types'; import { ComponentOpts as AlertApis, @@ -103,7 +103,7 @@ export const alertInstancesTableColumns = ( function durationAsString(duration: Duration): string { return [duration.hours(), duration.minutes(), duration.seconds()] - .map((value) => padLeft(`${value}`, 2, '0')) + .map((value) => padStart(`${value}`, 2, '0')) .join(':'); } diff --git a/x-pack/plugins/triggers_actions_ui/public/common/index_controls/index.ts b/x-pack/plugins/triggers_actions_ui/public/common/index_controls/index.ts index 0bec188f63640..da332aa326ccf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/index_controls/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/index_controls/index.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { uniq } from 'lodash'; import { HttpSetup } from 'kibana/public'; import { i18n } from '@kbn/i18n'; import { @@ -47,7 +48,7 @@ export const getIndexOptions = async ( }) as string[]; if (matchingIndices.length || matchingIndexPatterns.length) { - const matchingOptions = _.uniq([...matchingIndices, ...matchingIndexPatterns]); + const matchingOptions = uniq([...matchingIndices, ...matchingIndexPatterns]); options.push({ label: i18n.translate( diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/tabs/checkup/constants.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/tabs/checkup/constants.tsx index aeb5801c9f6b5..b7eafb7bf5c88 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/tabs/checkup/constants.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/tabs/checkup/constants.tsx @@ -14,7 +14,9 @@ export const LEVEL_MAP: { [level: string]: number } = { critical: 1, }; -export const REVERSE_LEVEL_MAP: { [idx: number]: DeprecationInfo['level'] } = invert(LEVEL_MAP); +export const REVERSE_LEVEL_MAP: { [idx: number]: DeprecationInfo['level'] } = invert( + LEVEL_MAP +) as any; export const COLOR_MAP: { [level: string]: IconColor } = { warning: 'default', diff --git a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/__tests__/integration_group.test.tsx b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/__tests__/integration_group.test.tsx index 25cf400bcd0fd..1c587568fe61d 100644 --- a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/__tests__/integration_group.test.tsx +++ b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/__tests__/integration_group.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { MonitorSummary } from '../../../../../../common/runtime_types'; import { shallowWithIntl } from 'test_utils/enzyme_helpers'; -import { IntegrationGroup } from '../actions_popover/integration_group'; +import { IntegrationGroup, extractSummaryValues } from '../actions_popover/integration_group'; describe('IntegrationGroup', () => { let summary: MonitorSummary; @@ -38,4 +38,97 @@ describe('IntegrationGroup', () => { const component = shallowWithIntl(); expect(component).toMatchSnapshot(); }); + + describe('extractSummaryValues', () => { + let mockSummary: Pick; + + beforeEach(() => { + mockSummary = { + state: { + timestamp: 'foo', + url: {}, + }, + }; + }); + + it('provides defaults when values are not present', () => { + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": undefined, + "domain": "", + "ip": undefined, + "podUid": undefined, + } + `); + }); + + it('finds url domain', () => { + mockSummary.state.url.domain = 'mydomain'; + + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": undefined, + "domain": "mydomain", + "ip": undefined, + "podUid": undefined, + } + `); + }); + + it('finds pod uid', () => { + mockSummary.state.checks = [ + { kubernetes: { pod: { uid: 'myuid' } }, monitor: { status: 'up' }, timestamp: 123 }, + ]; + + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": undefined, + "domain": "", + "ip": undefined, + "podUid": "myuid", + } + `); + }); + + it('does not throw for missing kubernetes fields', () => { + mockSummary.state.checks = []; + + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": undefined, + "domain": "", + "ip": undefined, + "podUid": undefined, + } + `); + }); + + it('finds container id', () => { + mockSummary.state.checks = [ + { container: { id: 'mycontainer' }, monitor: { status: 'up' }, timestamp: 123 }, + ]; + + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": "mycontainer", + "domain": "", + "ip": undefined, + "podUid": undefined, + } + `); + }); + + it('finds ip field', () => { + mockSummary.state.checks = [{ monitor: { ip: '127.0.0.1', status: 'up' }, timestamp: 123 }]; + + expect(extractSummaryValues(mockSummary)).toMatchInlineSnapshot(` + Object { + "containerId": undefined, + "domain": "", + "ip": "127.0.0.1", + "podUid": undefined, + } + `); + }); + }); }); diff --git a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx index bbcba7238748d..55a99ab8541f8 100644 --- a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx +++ b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx @@ -7,7 +7,6 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import React, { useContext } from 'react'; import { i18n } from '@kbn/i18n'; -import { get } from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import { IntegrationLink } from './integration_link'; import { @@ -26,6 +25,20 @@ interface IntegrationGroupProps { summary: MonitorSummary; } +export const extractSummaryValues = (summary: Pick) => { + const domain = summary.state.url?.domain ?? ''; + const podUid = summary.state.checks?.[0]?.kubernetes?.pod.uid ?? undefined; + const containerId = summary.state.checks?.[0]?.container?.id ?? undefined; + const ip = summary.state.checks?.[0]?.monitor.ip ?? undefined; + + return { + domain, + podUid, + containerId, + ip, + }; +}; + export const IntegrationGroup = ({ summary }: IntegrationGroupProps) => { const { basePath, @@ -36,10 +49,7 @@ export const IntegrationGroup = ({ summary }: IntegrationGroupProps) => { isLogsAvailable, } = useContext(UptimeSettingsContext); - const domain = get(summary, 'state.url.domain', ''); - const podUid = get(summary, 'state.checks[0].kubernetes.pod.uid', undefined); - const containerId = get(summary, 'state.checks[0].container.id', undefined); - const ip = get(summary, 'state.checks[0].monitor.ip', undefined); + const { domain, podUid, containerId, ip } = extractSummaryValues(summary); return isApmAvailable || isInfraAvailable || isLogsAvailable ? ( @@ -97,7 +107,7 @@ export const IntegrationGroup = ({ summary }: IntegrationGroupProps) => { { defaultMessage: 'Check Infrastructure UI for the IP "{ip}"', values: { - ip, + ip: Array.isArray(ip) ? ip[0] : ip, }, } )} @@ -184,7 +194,12 @@ export const IntegrationGroup = ({ summary }: IntegrationGroupProps) => { )} tooltipContent={i18n.translate( 'xpack.uptime.monitorList.loggingIntegrationAction.ip.tooltip', - { defaultMessage: 'Check Logging UI for the IP "{ip}"', values: { ip } } + { + defaultMessage: 'Check Logging UI for the IP "{ip}"', + values: { + ip: Array.isArray(ip) ? ip[0] : ip, + }, + } )} /> diff --git a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx index 12fff376a1a3c..26d0093446461 100644 --- a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx +++ b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; -import { get, capitalize } from 'lodash'; +import { get, upperFirst } from 'lodash'; import { EuiCallOut, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { LocationLink } from '../../../common/location_link'; @@ -26,12 +26,12 @@ export const MonitorStatusList = ({ checks }: MonitorStatusListProps) => { checks.forEach((check: Check) => { // Doing this way because name is either string or null, get() default value only works on undefined value - const location = get(check, 'observer.geo.name', null) || UNNAMED_LOCATION; + const location = get(check, 'observer.geo.name', null) || UNNAMED_LOCATION; if (check.monitor.status === STATUS.UP) { - upChecks.add(capitalize(location)); + upChecks.add(upperFirst(location)); } else if (check.monitor.status === STATUS.DOWN) { - downChecks.add(capitalize(location)); + downChecks.add(upperFirst(location)); } }); diff --git a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_status_column.tsx b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_status_column.tsx index a9d04e68b8929..f80c73dcf5bb0 100644 --- a/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_status_column.tsx +++ b/x-pack/plugins/uptime/public/components/overview/monitor_list/monitor_list_status_column.tsx @@ -7,7 +7,7 @@ import React from 'react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; -import { capitalize } from 'lodash'; +import { upperFirst } from 'lodash'; import styled from 'styled-components'; import { EuiHealth, EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip } from '@elastic/eui'; import { parseTimestamp } from './parse_timestamp'; @@ -83,9 +83,9 @@ export const getLocationStatus = (checks: Check[], status: string) => { const location = check?.observer?.geo?.name ?? UNNAMED_LOCATION; if (check.monitor.status === STATUS.UP) { - upChecks.add(capitalize(location)); + upChecks.add(upperFirst(location)); } else if (check.monitor.status === STATUS.DOWN) { - downChecks.add(capitalize(location)); + downChecks.add(upperFirst(location)); } }); diff --git a/x-pack/plugins/uptime/public/lib/adapters/framework/new_platform_adapter.tsx b/x-pack/plugins/uptime/public/lib/adapters/framework/new_platform_adapter.tsx index 3a940b4655b19..d6185f2c2589a 100644 --- a/x-pack/plugins/uptime/public/lib/adapters/framework/new_platform_adapter.tsx +++ b/x-pack/plugins/uptime/public/lib/adapters/framework/new_platform_adapter.tsx @@ -7,7 +7,6 @@ import { CoreStart } from 'src/core/public'; import React from 'react'; import ReactDOM from 'react-dom'; -import { get } from 'lodash'; import { i18n as i18nFormatter } from '@kbn/i18n'; import { UptimeApp, UptimeAppProps } from '../../../uptime_app'; import { getIntegratedAppAvailability } from './capabilities_adapter'; @@ -38,7 +37,7 @@ export const getKibanaFrameworkAdapter = ( INTEGRATED_SOLUTIONS ); - const canSave = get(capabilities, 'uptime.save', false); + const canSave = (capabilities.uptime.save ?? false) as boolean; const props: UptimeAppProps = { basePath: basePath.get(), diff --git a/x-pack/plugins/uptime/public/lib/helper/observability_integration/build_href.ts b/x-pack/plugins/uptime/public/lib/helper/observability_integration/build_href.ts index 414b37939b381..397d23a18332c 100644 --- a/x-pack/plugins/uptime/public/lib/helper/observability_integration/build_href.ts +++ b/x-pack/plugins/uptime/public/lib/helper/observability_integration/build_href.ts @@ -21,7 +21,7 @@ export const buildHref = ( getHref: (value: string | string[] | undefined) => string | undefined ): string | undefined => { const queryValue = checks - .map((check) => get(check, path, undefined)) + .map((check) => get(check, path, undefined)) .filter((value: string | undefined) => value !== undefined); if (queryValue.length === 0) { return getHref(undefined); diff --git a/x-pack/plugins/uptime/server/lib/requests/search/__tests__/enrich_monitor_groups.test.ts b/x-pack/plugins/uptime/server/lib/requests/search/__tests__/enrich_monitor_groups.test.ts new file mode 100644 index 0000000000000..dd7996b68c41f --- /dev/null +++ b/x-pack/plugins/uptime/server/lib/requests/search/__tests__/enrich_monitor_groups.test.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { sortChecksBy } from '../enrich_monitor_groups'; + +describe('enrich monitor groups', () => { + describe('sortChecksBy', () => { + it('identifies lesser geo name', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'less' } }, monitor: { status: 'up' } }, + { observer: { geo: { name: 'more' } }, monitor: { status: 'up' } } + ) + ).toBe(-1); + }); + + it('identifies greater geo name', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'more' } }, monitor: { status: 'up' } }, + { observer: { geo: { name: 'less' } }, monitor: { status: 'up' } } + ) + ).toBe(1); + }); + + it('identifies equivalent geo name and sorts by lesser ip', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.1', status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.2', status: 'up' } } + ) + ).toBe(-1); + }); + + it('identifies equivalent geo name and sorts by greater ip', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.2', status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.1', status: 'up' } } + ) + ).toBe(1); + }); + + it('identifies equivalent geo name and sorts by equivalent ip', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.1', status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: '127.0.0.1', status: 'up' } } + ) + ).toBe(0); + }); + + it('handles equivalent ip arrays', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'same' } }, monitor: { ip: ['127.0.0.1'], status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: ['127.0.0.1'], status: 'up' } } + ) + ).toBe(0); + }); + + it('handles non-equal ip arrays', () => { + expect( + sortChecksBy( + { + observer: { geo: { name: 'same' } }, + monitor: { ip: ['127.0.0.2', '127.0.0.9'], status: 'up' }, + }, + { + observer: { geo: { name: 'same' } }, + monitor: { ip: ['127.0.0.3', '127.0.0.1'], status: 'up' }, + } + ) + ).toBe(1); + }); + + it('handles undefined observer fields', () => { + expect( + sortChecksBy( + { observer: undefined, monitor: { ip: ['127.0.0.1'], status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: ['127.0.0.1'], status: 'up' } } + ) + ).toBe(-1); + }); + + it('handles undefined ip fields', () => { + expect( + sortChecksBy( + { observer: { geo: { name: 'same' } }, monitor: { ip: undefined, status: 'up' } }, + { observer: { geo: { name: 'same' } }, monitor: { ip: ['127.0.0.1'], status: 'up' } } + ) + ).toBe(-1); + }); + }); +}); diff --git a/x-pack/plugins/uptime/server/lib/requests/search/enrich_monitor_groups.ts b/x-pack/plugins/uptime/server/lib/requests/search/enrich_monitor_groups.ts index 6e52b3a11f25f..f5c4c55a4e300 100644 --- a/x-pack/plugins/uptime/server/lib/requests/search/enrich_monitor_groups.ts +++ b/x-pack/plugins/uptime/server/lib/requests/search/enrich_monitor_groups.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, sortBy } from 'lodash'; import { QueryContext } from './query_context'; import { Check, @@ -245,17 +244,17 @@ export const enrichMonitorGroups: MonitorEnricher = async ( const items = await queryContext.search(params); - const monitorBuckets = get(items, 'aggregations.monitors.buckets', []); + const monitorBuckets = items?.aggregations?.monitors?.buckets ?? []; const monitorIds: string[] = []; const summaries: MonitorSummary[] = monitorBuckets.map((monitor: any) => { - const monitorId = get(monitor, 'key.monitor_id'); + const monitorId = monitor.key.monitor_id; monitorIds.push(monitorId); const state: any = monitor.state?.value; state.timestamp = state['@timestamp']; const { checks } = state; - if (checks) { - state.checks = sortBy(checks, checksSortBy); + if (Array.isArray(checks)) { + checks.sort(sortChecksBy); state.checks = state.checks.map((check: any) => ({ ...check, timestamp: check['@timestamp'], @@ -276,7 +275,11 @@ export const enrichMonitorGroups: MonitorEnricher = async ( histogram: histogramMap[summary.monitor_id], })); - const sortedResItems: any = sortBy(resItems, 'monitor_id'); + const sortedResItems: any = resItems.sort((a, b) => { + if (a.monitor_id === b.monitor_id) return 0; + return a.monitor_id > b.monitor_id ? 1 : -1; + }); + if (queryContext.pagination.sortOrder === SortOrder.DESC) { sortedResItems.reverse(); } @@ -378,8 +381,29 @@ const cursorDirectionToOrder = (cd: CursorDirection): 'asc' | 'desc' => { return CursorDirection[cd] === CursorDirection.AFTER ? 'asc' : 'desc'; }; -type SortChecks = (check: Check) => string[]; -const checksSortBy = (check: Check) => [ - get(check, 'observer.geo.name'), - get(check, 'monitor.ip'), -]; +const getStringValue = (value: string | Array | null | undefined): string => { + if (Array.isArray(value)) { + value.sort(); + return value[0] ?? ''; + } + return value ?? ''; +}; + +export const sortChecksBy = ( + a: Pick, + b: Pick +) => { + const nameA: string = a.observer?.geo?.name ?? ''; + const nameB: string = b.observer?.geo?.name ?? ''; + + if (nameA === nameB) { + const ipA = getStringValue(a.monitor.ip); + const ipB = getStringValue(b.monitor.ip); + + if (ipA === ipB) { + return 0; + } + return ipA > ipB ? 1 : -1; + } + return nameA > nameB ? 1 : -1; +}; diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/threshold_watch_edit.tsx b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/threshold_watch_edit.tsx index b82f631a30fe7..01702a033d585 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/threshold_watch_edit.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_edit/components/threshold_watch_edit/threshold_watch_edit.tsx @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import _ from 'lodash'; import React, { Fragment, useContext, useEffect, useState } from 'react'; import { EuiButton, diff --git a/x-pack/plugins/watcher/server/models/execute_details/execute_details.js b/x-pack/plugins/watcher/server/models/execute_details/execute_details.js index 9dc162e06fba0..189da025e7142 100644 --- a/x-pack/plugins/watcher/server/models/execute_details/execute_details.js +++ b/x-pack/plugins/watcher/server/models/execute_details/execute_details.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { omit, isUndefined } from 'lodash'; +import { omitBy, isUndefined } from 'lodash'; export class ExecuteDetails { constructor(props) { @@ -22,14 +22,14 @@ export class ExecuteDetails { }; const result = { - trigger_data: omit(triggerData, isUndefined), + trigger_data: omitBy(triggerData, isUndefined), ignore_condition: this.ignoreCondition, alternative_input: this.alternativeInput, action_modes: this.actionModes, record_execution: this.recordExecution, }; - return omit(result, isUndefined); + return omitBy(result, isUndefined); } // generate ExecuteDetails object from kibana response diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js b/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js index 2bdd03e23c6dc..90cb65a77e9ae 100644 --- a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js +++ b/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js @@ -4,12 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, contains, values } from 'lodash'; +import { get, includes, values } from 'lodash'; import { WATCH_TYPES } from '../../../../../common/constants'; export function getWatchType(watchJson) { const type = get(watchJson, 'metadata.xpack.type'); - if (contains(values(WATCH_TYPES), type)) { + if (includes(values(WATCH_TYPES), type)) { return type; } diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics.ts b/x-pack/test/api_integration/apis/metrics_ui/metrics.ts index 673ee3c3f8475..23b0a96ecd401 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/metrics.ts @@ -61,13 +61,13 @@ export default function ({ getService }: FtrProviderContext) { return; } expect(resp.metrics.length).to.equal(1); - const metric = first(resp.metrics); + const metric = first(resp.metrics) as any; expect(metric).to.have.property('id', 'hostCpuUsage'); expect(metric).to.have.property('series'); - const series = first(metric.series); + const series = first(metric.series) as any; expect(series).to.have.property('id', 'user'); expect(series).to.have.property('data'); - const datapoint = last(series.data); + const datapoint = last(series.data) as any; expect(datapoint).to.have.property('timestamp', 1547571720000); expect(datapoint).to.have.property('value', 0.0018333333333333333); }); diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts b/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts index 554b17d505c5e..d372496d2d1d9 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts @@ -49,7 +49,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); expect(body.series).length(1); - const firstSeries = first(body.series); + const firstSeries = first(body.series) as any; expect(firstSeries).to.have.property('id', 'Everything'); expect(firstSeries.columns).to.eql([ { name: 'timestamp', type: 'date' }, @@ -89,7 +89,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); expect(body.series).length(1); - const firstSeries = first(body.series); + const firstSeries = first(body.series) as any; expect(firstSeries).to.have.property('id', 'Everything'); expect(firstSeries.columns).to.eql([ { name: 'timestamp', type: 'date' }, @@ -120,7 +120,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); expect(body.series).length(1); - const firstSeries = first(body.series); + const firstSeries = first(body.series) as any; expect(firstSeries).to.have.property('id', 'Everything'); expect(firstSeries.columns).to.eql([]); expect(firstSeries.rows).to.have.length(0); @@ -151,7 +151,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); expect(body.series).length(3); - const firstSeries = first(body.series); + const firstSeries = first(body.series) as any; expect(firstSeries).to.have.property('id', 'system.diskio'); expect(firstSeries.columns).to.eql([ { name: 'timestamp', type: 'date' }, @@ -196,7 +196,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const body = decodeOrThrow(metricsExplorerResponseRT)(response.body); expect(body.series).length(3); - const firstSeries = first(body.series); + const firstSeries = first(body.series) as any; expect(firstSeries).to.have.property('id', 'demo-stack-mysql-01 / eth0'); expect(firstSeries.columns).to.eql([ { name: 'timestamp', type: 'date' }, diff --git a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts b/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts index 1f4da602b108a..bb0934b73a4c7 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts @@ -60,7 +60,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(5); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property( @@ -105,7 +105,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(65); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property( @@ -137,7 +137,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(136); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property( @@ -176,7 +176,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property('value', 'demo-stack-mysql-01'); @@ -187,7 +187,7 @@ export default function ({ getService }: FtrProviderContext) { name: 'cpu', value: 0.0032, max: 0.0038333333333333336, - avg: 0.0027944444444444444, + avg: 0.002794444444444445, }, ]); } @@ -215,7 +215,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property('value', 'demo-stack-mysql-01'); @@ -250,7 +250,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property('value', 'demo-stack-mysql-01'); @@ -287,7 +287,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(1); expect(first(firstNode.path)).to.have.property('value', 'demo-stack-mysql-01'); @@ -322,7 +322,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(2); expect(first(firstNode.path)).to.have.property('value', 'virtualbox'); @@ -350,7 +350,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(1); - const firstNode = first(nodes); + const firstNode = first(nodes) as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(3); expect(first(firstNode.path)).to.have.property('value', 'vagrant'); @@ -378,7 +378,7 @@ export default function ({ getService }: FtrProviderContext) { if (snapshot) { const { nodes } = snapshot; expect(nodes.length).to.equal(2); - const firstNode = nodes[0]; + const firstNode = nodes[0] as any; expect(firstNode).to.have.property('path'); expect(firstNode.path.length).to.equal(2); expect(firstNode.path[0]).to.have.property('value', 'mysql'); @@ -389,10 +389,10 @@ export default function ({ getService }: FtrProviderContext) { name: 'cpu', value: 0.0032, max: 0.0038333333333333336, - avg: 0.0027944444444444444, + avg: 0.002794444444444445, }, ]); - const secondNode = nodes[1]; + const secondNode = nodes[1] as any; expect(secondNode).to.have.property('path'); expect(secondNode.path.length).to.equal(2); expect(secondNode.path[0]).to.have.property('value', 'system'); @@ -403,7 +403,7 @@ export default function ({ getService }: FtrProviderContext) { name: 'cpu', value: 0.0032, max: 0.0038333333333333336, - avg: 0.0027944444444444444, + avg: 0.002794444444444445, }, ]); } diff --git a/x-pack/test/api_integration/apis/security/privileges.ts b/x-pack/test/api_integration/apis/security/privileges.ts index de0abe2350eb5..78915f6580299 100644 --- a/x-pack/test/api_integration/apis/security/privileges.ts +++ b/x-pack/test/api_integration/apis/security/privileges.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import util from 'util'; -import { isEqual } from 'lodash'; +import { isEqual, isEqualWith } from 'lodash'; import expect from '@kbn/expect/expect.js'; import { RawKibanaPrivileges } from '../../../../plugins/security/common/model'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -53,7 +53,7 @@ export default function ({ getService }: FtrProviderContext) { // supertest uses assert.deepStrictEqual. // expect.js doesn't help us here. // and lodash's isEqual doesn't know how to compare Sets. - const success = isEqual(res.body, expected, (value, other, key) => { + const success = isEqualWith(res.body, expected, (value, other, key) => { if (Array.isArray(value) && Array.isArray(other)) { if (key === 'reserved') { // order does not matter for the reserved privilege set. diff --git a/x-pack/test/api_integration/apis/security/privileges_basic.ts b/x-pack/test/api_integration/apis/security/privileges_basic.ts index 00bfcdc119e47..d2bfdbe4dc967 100644 --- a/x-pack/test/api_integration/apis/security/privileges_basic.ts +++ b/x-pack/test/api_integration/apis/security/privileges_basic.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import util from 'util'; -import { isEqual } from 'lodash'; +import { isEqual, isEqualWith } from 'lodash'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -51,7 +51,7 @@ export default function ({ getService }: FtrProviderContext) { // supertest uses assert.deepStrictEqual. // expect.js doesn't help us here. // and lodash's isEqual doesn't know how to compare Sets. - const success = isEqual(res.body, expected, (value, other, key) => { + const success = isEqualWith(res.body, expected, (value, other, key) => { if (Array.isArray(value) && Array.isArray(other)) { return isEqual(value.sort(), other.sort()); } diff --git a/x-pack/test/apm_api_integration/trial/tests/annotations.ts b/x-pack/test/apm_api_integration/trial/tests/annotations.ts index cd78f0ff7b88d..662879c495230 100644 --- a/x-pack/test/apm_api_integration/trial/tests/annotations.ts +++ b/x-pack/test/apm_api_integration/trial/tests/annotations.ts @@ -18,7 +18,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) { function expectContainsObj(source: JsonObject, expected: JsonObject) { expect(source).to.eql( - merge(cloneDeep(source), expected, (a, b) => { + merge(cloneDeep(source), expected, (a: any, b: any) => { if (isPlainObject(a) && isPlainObject(b)) { return undefined; } diff --git a/x-pack/test/functional/apps/lens/persistent_context.ts b/x-pack/test/functional/apps/lens/persistent_context.ts index b980116c581da..9146ec7334625 100644 --- a/x-pack/test/functional/apps/lens/persistent_context.ts +++ b/x-pack/test/functional/apps/lens/persistent_context.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/apps/lens/smokescreen.ts b/x-pack/test/functional/apps/lens/smokescreen.ts index b399c9e915e27..97cdd081705a4 100644 --- a/x-pack/test/functional/apps/lens/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/smokescreen.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/apps/security/doc_level_security_roles.js b/x-pack/test/functional/apps/security/doc_level_security_roles.js index c0a1ff34db96b..72f463be48fd5 100644 --- a/x-pack/test/functional/apps/security/doc_level_security_roles.js +++ b/x-pack/test/functional/apps/security/doc_level_security_roles.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const esArchiver = getService('esArchiver'); @@ -43,7 +43,7 @@ export default function ({ getService, getPageObjects }) { global: ['all'], }, }); - const roles = indexBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); + const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); log.debug('actualRoles = %j', roles); expect(roles).to.have.key('myroleEast'); expect(roles.myroleEast.reserved).to.be(false); @@ -61,7 +61,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: ['kibana_admin', 'myroleEast'], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.userEast.roles).to.eql(['kibana_admin', 'myroleEast']); expect(users.userEast.reserved).to.be(false); diff --git a/x-pack/test/functional/apps/security/field_level_security.js b/x-pack/test/functional/apps/security/field_level_security.js index ec6b91219b7c4..7b22d72885c9d 100644 --- a/x-pack/test/functional/apps/security/field_level_security.js +++ b/x-pack/test/functional/apps/security/field_level_security.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const esArchiver = getService('esArchiver'); @@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }) { }); await PageObjects.common.sleep(1000); - const roles = indexBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); + const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); log.debug('actualRoles = %j', roles); expect(roles).to.have.key('a_viewssnrole'); expect(roles.a_viewssnrole.reserved).to.be(false); @@ -64,7 +64,7 @@ export default function ({ getService, getPageObjects }) { }, }); await PageObjects.common.sleep(1000); - const roles = indexBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); + const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); log.debug('actualRoles = %j', roles); expect(roles).to.have.key('a_view_no_ssn_role'); expect(roles.a_view_no_ssn_role.reserved).to.be(false); @@ -81,7 +81,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: ['kibana_admin', 'a_viewssnrole'], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.customer1.roles).to.eql(['kibana_admin', 'a_viewssnrole']); }); @@ -97,7 +97,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: ['kibana_admin', 'a_view_no_ssn_role'], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.customer2.roles).to.eql(['kibana_admin', 'a_view_no_ssn_role']); }); diff --git a/x-pack/test/functional/apps/security/rbac_phase1.js b/x-pack/test/functional/apps/security/rbac_phase1.js index e9c09d1af6ea6..b138859d01361 100644 --- a/x-pack/test/functional/apps/security/rbac_phase1.js +++ b/x-pack/test/functional/apps/security/rbac_phase1.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects([ 'security', @@ -70,7 +70,7 @@ export default function ({ getService, getPageObjects }) { roles: ['rbac_all'], }); log.debug('After Add user: , userObj.userName'); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); log.debug('roles: ', users.kibanauser.roles); expect(users.kibanauser.roles).to.eql(['rbac_all']); @@ -88,7 +88,7 @@ export default function ({ getService, getPageObjects }) { roles: ['rbac_read'], }); log.debug('After Add user: , userObj.userName'); - const users1 = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users1 = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); const user = users1.kibanareadonly; log.debug('actualUsers = %j', users1); log.debug('roles: ', user.roles); diff --git a/x-pack/test/functional/apps/security/secure_roles_perm.js b/x-pack/test/functional/apps/security/secure_roles_perm.js index 94b4306819052..2054a7b0b0038 100644 --- a/x-pack/test/functional/apps/security/secure_roles_perm.js +++ b/x-pack/test/functional/apps/security/secure_roles_perm.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects([ 'security', @@ -64,7 +64,7 @@ export default function ({ getService, getPageObjects }) { roles: ['logstash_reader', 'kibana_admin'], }); log.debug('After Add user: , userObj.userName'); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); log.debug('roles: ', users.Rashmi.roles); expect(users.Rashmi.roles).to.eql(['logstash_reader', 'kibana_admin']); diff --git a/x-pack/test/functional/apps/security/user_email.js b/x-pack/test/functional/apps/security/user_email.js index b6e3a84d6f7c0..a2a2b705172d7 100644 --- a/x-pack/test/functional/apps/security/user_email.js +++ b/x-pack/test/functional/apps/security/user_email.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['security', 'settings', 'common', 'accountSetting']); const log = getService('log'); @@ -28,7 +28,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: ['kibana_admin', 'superuser'], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.newuser.roles).to.eql(['kibana_admin', 'superuser']); expect(users.newuser.fullname).to.eql('newuserFirst newuserLast'); diff --git a/x-pack/test/functional/apps/security/users.js b/x-pack/test/functional/apps/security/users.js index 4c8c04c0356b0..4fd4384a93c59 100644 --- a/x-pack/test/functional/apps/security/users.js +++ b/x-pack/test/functional/apps/security/users.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['security', 'settings']); const config = getService('config'); @@ -19,7 +19,7 @@ export default function ({ getService, getPageObjects }) { }); it('should show the default elastic and kibana_system users', async function () { - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.info('actualUsers = %j', users); log.info('config = %j', config.get('servers.elasticsearch.hostname')); if (config.get('servers.elasticsearch.hostname') === 'localhost') { @@ -50,7 +50,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: ['kibana_admin'], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.Lee.roles).to.eql(['kibana_admin']); expect(users.Lee.fullname).to.eql('LeeFirst LeeLast'); @@ -66,7 +66,7 @@ export default function ({ getService, getPageObjects }) { save: true, roles: [], }); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users.OptionalUser.roles).to.eql(['']); expect(users.OptionalUser.fullname).to.eql(''); @@ -77,14 +77,14 @@ export default function ({ getService, getPageObjects }) { it('should delete user', async function () { const alertMsg = await PageObjects.security.deleteUser('Lee'); log.debug('alertMsg = %s', alertMsg); - const users = indexBy(await PageObjects.security.getElasticsearchUsers(), 'username'); + const users = keyBy(await PageObjects.security.getElasticsearchUsers(), 'username'); log.debug('actualUsers = %j', users); expect(users).to.not.have.key('Lee'); }); it('should show the default roles', async function () { await PageObjects.security.clickElasticsearchRoles(); - const roles = indexBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); + const roles = keyBy(await PageObjects.security.getElasticsearchRoles(), 'rolename'); log.debug('actualRoles = %j', roles); // This only contains the first page of alphabetically sorted results, so the assertions are only for the first handful of expected roles. expect(roles.apm_system.reserved).to.be(true); diff --git a/x-pack/test/functional/apps/watcher/watcher_test.js b/x-pack/test/functional/apps/watcher/watcher_test.js index 7a2eebc118ab3..1dd3fb6bbcc3d 100644 --- a/x-pack/test/functional/apps/watcher/watcher_test.js +++ b/x-pack/test/functional/apps/watcher/watcher_test.js @@ -5,7 +5,7 @@ */ import expect from '@kbn/expect'; -import { indexBy } from 'lodash'; +import { keyBy } from 'lodash'; const watchID = 'watchID'; const watchName = 'watch Name'; @@ -74,7 +74,7 @@ export default function ({ getService, getPageObjects }) { it('should delete the watch', async () => { // Navigate to the main list page await PageObjects.common.navigateToApp('watcher'); - const watchList = indexBy(await PageObjects.watcher.getWatches(), 'id'); + const watchList = keyBy(await PageObjects.watcher.getWatches(), 'id'); log.debug(watchList); expect(watchList.watchID.name).to.eql([watchName]); await PageObjects.watcher.deleteWatch(watchID); 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 e22b098e6ee0c..d86d272c1da8c 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 @@ -375,7 +375,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const { alertInstances } = await alerting.alerts.getAlertState(alert.id); - const dateOnAllInstancesFromApiResponse = mapValues>( + const dateOnAllInstancesFromApiResponse = mapValues( alertInstances, ({ meta: { diff --git a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json index 35a420561731a..2b174a8cae076 100644 --- a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json +++ b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/package.json @@ -11,7 +11,6 @@ "build": "rm -rf './target' && tsc" }, "dependencies": { - "lodash": "^4.17.15", "uuid": "3.3.2", "stats-lite": "2.2.0", "pretty-ms": "5.0.0" diff --git a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/server/plugin.ts b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/server/plugin.ts index 9fbe9f26944ca..ba6d7ced3c591 100644 --- a/x-pack/test/plugin_api_perf/plugins/task_manager_performance/server/plugin.ts +++ b/x-pack/test/plugin_api_perf/plugins/task_manager_performance/server/plugin.ts @@ -265,8 +265,8 @@ function avg(items: number[]) { return { mean: Math.round(stats.mean(items)), range: { - min: Math.round(isNumericArray(mode) ? _.min([...mode]) : mode), - max: Math.round(isNumericArray(mode) ? _.max([...mode]) : mode), + min: Math.round(isNumericArray(mode) ? (_.min([...mode]) as number) : (mode as number)), + max: Math.round(isNumericArray(mode) ? (_.max([...mode]) as number) : (mode as number)), }, }; } diff --git a/x-pack/typings/index.d.ts b/x-pack/typings/index.d.ts index 1bf1370ad467f..73efee0dab2eb 100644 --- a/x-pack/typings/index.d.ts +++ b/x-pack/typings/index.d.ts @@ -22,11 +22,6 @@ declare module '*.svg' { export default content; } -declare module 'lodash/internal/toPath' { - function toPath(value: string | string[]): string[]; - export = toPath; -} - type MethodKeysOf = { [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never; }[keyof T]; diff --git a/yarn.lock b/yarn.lock index ace6181797246..02f7e90ab7d24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5325,35 +5325,21 @@ "@types/node" "*" "@types/webpack" "*" -"@types/lodash.clonedeep@^4.5.4": - version "4.5.4" - resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.4.tgz#2515c5f08bc95afebfb597711871b0497f5d7da7" - integrity sha512-+rCVPIZOJaub++wU/lmyp/SxiKlqXQaXI5LryzjuHBKFj51ApVt38Xxk9psLWNGMuR/obEQNTH0l/yDfG4ANNQ== - dependencies: - "@types/lodash" "*" +"@types/lodash@4.14.149", "@types/lodash@^4.14.155": + version "4.14.156" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.156.tgz#cbe30909c89a1feeb7c60803e785344ea0ec82d1" + integrity sha512-l2AgHXcKUwx2DsvP19wtRPqZ4NkONjmorOdq4sMcxIjqdIuuV/ULo2ftuv4NUpevwfW7Ju/UKLqo0ZXuEt/8lQ== -"@types/lodash.clonedeepwith@^4.5.3": - version "4.5.3" - resolved "https://registry.yarnpkg.com/@types/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.3.tgz#8057f074de743bdcff59fdbf26cd04c674a186cc" - integrity sha512-DNOO/Vec+yrzxxYwRXhVxTE4cOE1Xkf1xUzHhz3atoQ2URYKjvO5m9S7UxUcpn48rXkt9PxOT6cOyJCMIfjLNg== - dependencies: - "@types/lodash" "*" +"@types/lodash@^3.10.1": + version "3.10.3" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-3.10.3.tgz#aaddec6a3c93bf03b402db3acf5d4c77bce8bdff" + integrity sha512-b9zScBKmB/RJqETbxu3YRya61vJOik89/lR+NdxjZAFMDcMSjwX6IhQoP4terJkhsa9TE1C+l6XwxCkhhsaZXg== -"@types/lodash@*", "@types/lodash@^4.14.110", "@types/lodash@^4.14.116": +"@types/lodash@^4.14.116": version "4.14.150" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.150.tgz#649fe44684c3f1fcb6164d943c5a61977e8cf0bd" integrity sha512-kMNLM5JBcasgYscD9x/Gvr6lTAv2NVgsKtet/hm93qMyf/D1pt+7jeEZklKJKxMVmXjxbRVQQGfqDSfipYCO6w== -"@types/lodash@4.14.149": - version "4.14.149" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" - integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== - -"@types/lodash@^3.10.1": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-3.10.2.tgz#c1fbda1562ef5603c8192fe1fe65b017849d5873" - integrity sha512-TmlYodTNhMzVzv3CK/9sXGzh31jWsRKHE3faczhVgYFCdXIRQRCOPD+0NDlR+SvJlCj914yP3q3aAupt53p2Ug== - "@types/log-symbols@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/log-symbols/-/log-symbols-2.0.0.tgz#7919e2ec3c8d13879bfdcab310dd7a3f7fc9466d" @@ -20672,16 +20658,6 @@ lodash.clone@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.clonedeepwith@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" - integrity sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -20792,26 +20768,16 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.kebabcase@^4.0.0, lodash.kebabcase@^4.1.1: +lodash.kebabcase@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= -lodash.keyby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.keyby/-/lodash.keyby-4.6.0.tgz#7f6a1abda93fd24e22728a4d361ed8bcba5a4354" - integrity sha1-f2oavak/0k4icopNNh7YvLpaQ1Q= - lodash.map@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= -lodash.mean@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.mean/-/lodash.mean-4.1.0.tgz#bb985349628c0b9d7fe0f5fcc0011a2ee2c0dd7a" - integrity sha1-u5hTSWKMC51/4PX8wAEaLuLA3Xo= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -20872,11 +20838,6 @@ lodash.set@^4.3.2: resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - lodash.some@^4.4.0, lodash.some@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" @@ -20887,11 +20848,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= - lodash.template@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -20912,11 +20868,6 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash.topath@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" - integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= - lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" @@ -20932,11 +20883,6 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= - lodash@4.17.11, lodash@4.17.15, lodash@>4.17.4, lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@~4.17.10, lodash@~4.17.15, lodash@~4.17.5: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" From ebcec3a904b8133ac057609bfe875fab123dd5fe Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 2 Jul 2020 18:50:50 -0600 Subject: [PATCH 17/59] [Maps] show vector tile labels on top (#69444) * [Maps] show vector tile labels on top * experiment with new sort algorithm * clean up * remove old sort method * add unit test for sort layer * tslint * clean up * make labelsOnTop configurable * tslint * more tslint * add another test case for single layer move * clarify should messages * fix assert not null operators * review feedback * update snapshot Co-authored-by: Elastic Machine --- .../maps/common/descriptor_types/sources.ts | 1 + .../maps/public/actions/layer_actions.ts | 9 + .../maps/public/classes/layers/layer.tsx | 10 + .../vector_tile_layer/vector_tile_layer.js | 8 + .../__snapshots__/view.test.js.snap | 14 +- .../layer_panel/layer_settings/index.js | 41 ---- .../layer_panel/layer_settings/index.tsx | 30 +++ .../layer_settings/layer_settings.js | 87 ------- .../layer_settings/layer_settings.tsx | 134 +++++++++++ .../connected_components/layer_panel/view.js | 2 +- .../map/mb/mb.utils.test.js | 79 +----- .../map/mb/sort_layers.test.ts | 225 ++++++++++++++++++ .../map/mb/sort_layers.ts | 142 +++++++++++ .../connected_components/map/mb/utils.js | 79 ------ .../connected_components/map/mb/view.js | 11 +- 15 files changed, 577 insertions(+), 295 deletions(-) delete mode 100644 x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.js create mode 100644 x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.tsx delete mode 100644 x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.js create mode 100644 x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.tsx create mode 100644 x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.test.ts create mode 100644 x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.ts diff --git a/x-pack/plugins/maps/common/descriptor_types/sources.ts b/x-pack/plugins/maps/common/descriptor_types/sources.ts index 86ace0e32cc84..e32b5f44c8272 100644 --- a/x-pack/plugins/maps/common/descriptor_types/sources.ts +++ b/x-pack/plugins/maps/common/descriptor_types/sources.ts @@ -169,6 +169,7 @@ export type LayerDescriptor = { alpha?: number; id: string; label?: string | null; + areLabelsOnTop?: boolean; minZoom?: number; maxZoom?: number; sourceDescriptor: SourceDescriptor | null; diff --git a/x-pack/plugins/maps/public/actions/layer_actions.ts b/x-pack/plugins/maps/public/actions/layer_actions.ts index a2711fbd124fb..a0d2152e8866c 100644 --- a/x-pack/plugins/maps/public/actions/layer_actions.ts +++ b/x-pack/plugins/maps/public/actions/layer_actions.ts @@ -319,6 +319,15 @@ export function updateLayerAlpha(id: string, alpha: number) { }; } +export function updateLabelsOnTop(id: string, areLabelsOnTop: boolean) { + return { + type: UPDATE_LAYER_PROP, + id, + propName: 'areLabelsOnTop', + newValue: areLabelsOnTop, + }; +} + export function setLayerQuery(id: string, query: Query) { return (dispatch: Dispatch) => { dispatch({ diff --git a/x-pack/plugins/maps/public/classes/layers/layer.tsx b/x-pack/plugins/maps/public/classes/layers/layer.tsx index e122d1cda3ed9..d6f6ee8fa609b 100644 --- a/x-pack/plugins/maps/public/classes/layers/layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/layer.tsx @@ -76,6 +76,8 @@ export interface ILayer { getPrevRequestToken(dataId: string): symbol | undefined; destroy: () => void; isPreviewLayer: () => boolean; + areLabelsOnTop: () => boolean; + supportsLabelsOnTop: () => boolean; } export type Footnote = { icon: ReactElement; @@ -483,4 +485,12 @@ export class AbstractLayer implements ILayer { getType(): string | undefined { return this._descriptor.type; } + + areLabelsOnTop(): boolean { + return false; + } + + supportsLabelsOnTop(): boolean { + return false; + } } diff --git a/x-pack/plugins/maps/public/classes/layers/vector_tile_layer/vector_tile_layer.js b/x-pack/plugins/maps/public/classes/layers/vector_tile_layer/vector_tile_layer.js index 61ec02e72adf2..96dad0c01139e 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_tile_layer/vector_tile_layer.js +++ b/x-pack/plugins/maps/public/classes/layers/vector_tile_layer/vector_tile_layer.js @@ -277,4 +277,12 @@ export class VectorTileLayer extends TileLayer { this._setOpacityForType(mbMap, mbLayer, mbLayerId); }); } + + areLabelsOnTop() { + return !!this._descriptor.areLabelsOnTop; + } + + supportsLabelsOnTop() { + return true; + } } diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/__snapshots__/view.test.js.snap b/x-pack/plugins/maps/public/connected_components/layer_panel/__snapshots__/view.test.js.snap index 1620e3058be67..1c48ed2290dce 100644 --- a/x-pack/plugins/maps/public/connected_components/layer_panel/__snapshots__/view.test.js.snap +++ b/x-pack/plugins/maps/public/connected_components/layer_panel/__snapshots__/view.test.js.snap @@ -89,7 +89,19 @@ exports[`LayerPanel is rendered 1`] = ` className="mapLayerPanel__bodyOverflow" > - +
mockSourceSettings
diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.js b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.js deleted file mode 100644 index 0d2732184afc4..0000000000000 --- a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.js +++ /dev/null @@ -1,41 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { connect } from 'react-redux'; -import { LayerSettings } from './layer_settings'; -import { getSelectedLayer } from '../../../selectors/map_selectors'; -import { - updateLayerLabel, - updateLayerMaxZoom, - updateLayerMinZoom, - updateLayerAlpha, -} from '../../../actions'; -import { MAX_ZOOM } from '../../../../common/constants'; - -function mapStateToProps(state = {}) { - const selectedLayer = getSelectedLayer(state); - return { - minVisibilityZoom: selectedLayer.getMinSourceZoom(), - maxVisibilityZoom: MAX_ZOOM, - alpha: selectedLayer.getAlpha(), - label: selectedLayer.getLabel(), - layerId: selectedLayer.getId(), - maxZoom: selectedLayer.getMaxZoom(), - minZoom: selectedLayer.getMinZoom(), - }; -} - -function mapDispatchToProps(dispatch) { - return { - updateLabel: (id, label) => dispatch(updateLayerLabel(id, label)), - updateMinZoom: (id, minZoom) => dispatch(updateLayerMinZoom(id, minZoom)), - updateMaxZoom: (id, maxZoom) => dispatch(updateLayerMaxZoom(id, maxZoom)), - updateAlpha: (id, alpha) => dispatch(updateLayerAlpha(id, alpha)), - }; -} - -const connectedLayerSettings = connect(mapStateToProps, mapDispatchToProps)(LayerSettings); -export { connectedLayerSettings as LayerSettings }; diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.tsx b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.tsx new file mode 100644 index 0000000000000..d2468496fbe0d --- /dev/null +++ b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/index.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AnyAction, Dispatch } from 'redux'; +import { connect } from 'react-redux'; +import { LayerSettings } from './layer_settings'; +import { + updateLayerLabel, + updateLayerMaxZoom, + updateLayerMinZoom, + updateLayerAlpha, + updateLabelsOnTop, +} from '../../../actions'; + +function mapDispatchToProps(dispatch: Dispatch) { + return { + updateLabel: (id: string, label: string) => dispatch(updateLayerLabel(id, label)), + updateMinZoom: (id: string, minZoom: number) => dispatch(updateLayerMinZoom(id, minZoom)), + updateMaxZoom: (id: string, maxZoom: number) => dispatch(updateLayerMaxZoom(id, maxZoom)), + updateAlpha: (id: string, alpha: number) => dispatch(updateLayerAlpha(id, alpha)), + updateLabelsOnTop: (id: string, areLabelsOnTop: boolean) => + dispatch(updateLabelsOnTop(id, areLabelsOnTop)), + }; +} + +const connectedLayerSettings = connect(null, mapDispatchToProps)(LayerSettings); +export { connectedLayerSettings as LayerSettings }; diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.js b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.js deleted file mode 100644 index bc99285cfc7aa..0000000000000 --- a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.js +++ /dev/null @@ -1,87 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { Fragment } from 'react'; - -import { EuiTitle, EuiPanel, EuiFormRow, EuiFieldText, EuiSpacer } from '@elastic/eui'; - -import { AlphaSlider } from '../../../components/alpha_slider'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { ValidatedDualRange } from '../../../../../../../src/plugins/kibana_react/public'; -export function LayerSettings(props) { - const onLabelChange = (event) => { - const label = event.target.value; - props.updateLabel(props.layerId, label); - }; - - const onZoomChange = ([min, max]) => { - props.updateMinZoom(props.layerId, Math.max(props.minVisibilityZoom, parseInt(min, 10))); - props.updateMaxZoom(props.layerId, Math.min(props.maxVisibilityZoom, parseInt(max, 10))); - }; - - const onAlphaChange = (alpha) => { - props.updateAlpha(props.layerId, alpha); - }; - - const renderZoomSliders = () => { - return ( - - ); - }; - - const renderLabel = () => { - return ( - - - - ); - }; - - return ( - - - -
- -
-
- - - {renderLabel()} - {renderZoomSliders()} - -
- - -
- ); -} diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.tsx b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.tsx new file mode 100644 index 0000000000000..33d684b320208 --- /dev/null +++ b/x-pack/plugins/maps/public/connected_components/layer_panel/layer_settings/layer_settings.tsx @@ -0,0 +1,134 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { ChangeEvent, Fragment } from 'react'; +import { + EuiTitle, + EuiPanel, + EuiFormRow, + EuiFieldText, + EuiSpacer, + EuiSwitch, + EuiSwitchEvent, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { MAX_ZOOM } from '../../../../common/constants'; +import { AlphaSlider } from '../../../components/alpha_slider'; +import { ValidatedDualRange } from '../../../../../../../src/plugins/kibana_react/public'; +import { ILayer } from '../../../classes/layers/layer'; + +interface Props { + layer: ILayer; + updateLabel: (layerId: string, label: string) => void; + updateMinZoom: (layerId: string, minZoom: number) => void; + updateMaxZoom: (layerId: string, maxZoom: number) => void; + updateAlpha: (layerId: string, alpha: number) => void; + updateLabelsOnTop: (layerId: string, areLabelsOnTop: boolean) => void; +} + +export function LayerSettings(props: Props) { + const minVisibilityZoom = props.layer.getMinSourceZoom(); + const maxVisibilityZoom = MAX_ZOOM; + const layerId = props.layer.getId(); + + const onLabelChange = (event: ChangeEvent) => { + const label = event.target.value; + props.updateLabel(layerId, label); + }; + + const onZoomChange = (value: [string, string]) => { + props.updateMinZoom(layerId, Math.max(minVisibilityZoom, parseInt(value[0], 10))); + props.updateMaxZoom(layerId, Math.min(maxVisibilityZoom, parseInt(value[1], 10))); + }; + + const onAlphaChange = (alpha: number) => { + props.updateAlpha(layerId, alpha); + }; + + const onLabelsOnTopChange = (event: EuiSwitchEvent) => { + props.updateLabelsOnTop(layerId, event.target.checked); + }; + + const renderZoomSliders = () => { + return ( + + ); + }; + + const renderLabel = () => { + return ( + + + + ); + }; + + const renderShowLabelsOnTop = () => { + if (!props.layer.supportsLabelsOnTop()) { + return null; + } + + return ( + + + + ); + }; + + return ( + + + +
+ +
+
+ + + {renderLabel()} + {renderZoomSliders()} + + {renderShowLabelsOnTop()} +
+ + +
+ ); +} diff --git a/x-pack/plugins/maps/public/connected_components/layer_panel/view.js b/x-pack/plugins/maps/public/connected_components/layer_panel/view.js index 557fe5fd5f705..71d76ff53d8a9 100644 --- a/x-pack/plugins/maps/public/connected_components/layer_panel/view.js +++ b/x-pack/plugins/maps/public/connected_components/layer_panel/view.js @@ -205,7 +205,7 @@ export class LayerPanel extends React.Component {
- + {this.props.selectedLayer.renderSourceSettingsEditor({ onChange: this._onSourceChange, diff --git a/x-pack/plugins/maps/public/connected_components/map/mb/mb.utils.test.js b/x-pack/plugins/maps/public/connected_components/map/mb/mb.utils.test.js index 376010f0df9ba..e2050724ef684 100644 --- a/x-pack/plugins/maps/public/connected_components/map/mb/mb.utils.test.js +++ b/x-pack/plugins/maps/public/connected_components/map/mb/mb.utils.test.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { removeOrphanedSourcesAndLayers, syncLayerOrderForSingleLayer } from './utils'; +import { removeOrphanedSourcesAndLayers } from './utils'; import { SPATIAL_FILTERS_LAYER_ID } from '../../../../common/constants'; import _ from 'lodash'; @@ -186,80 +186,3 @@ describe('removeOrphanedSourcesAndLayers', () => { expect(mockMbMap.getStyle()).toEqual(styleWithSpatialFilters); }); }); - -describe('syncLayerOrderForSingleLayer', () => { - test('should move bar layer in front of foo layer', async () => { - const fooLayer = makeSingleSourceMockLayer('foo'); - const barLayer = makeSingleSourceMockLayer('bar'); - - const currentLayerOrder = [fooLayer, barLayer]; - const nextLayerListOrder = [barLayer, fooLayer]; - - const currentStyle = getMockStyle(currentLayerOrder); - const mockMbMap = new MockMbMap(currentStyle); - syncLayerOrderForSingleLayer(mockMbMap, nextLayerListOrder); - const orderedStyle = mockMbMap.getStyle(); - - const nextStyle = getMockStyle(nextLayerListOrder); - expect(orderedStyle).toEqual(nextStyle); - }); - - test('should fail at moving multiple layers (this tests a limitation of the sync)', async () => { - //This is a known limitation of the layer order syncing. - //It assumes only a single layer will have moved. - //In practice, the Maps app will likely not cause multiple layers to move at once: - // - the UX only allows dragging a single layer - // - redux triggers a updates frequently enough - //But this is conceptually "wrong", as the sync does not actually operate in the same way as all the other mb-syncing methods - - const fooLayer = makeSingleSourceMockLayer('foo'); - const barLayer = makeSingleSourceMockLayer('bar'); - const foozLayer = makeSingleSourceMockLayer('foo'); - const bazLayer = makeSingleSourceMockLayer('baz'); - - const currentLayerOrder = [fooLayer, barLayer, foozLayer, bazLayer]; - const nextLayerListOrder = [bazLayer, barLayer, foozLayer, fooLayer]; - - const currentStyle = getMockStyle(currentLayerOrder); - const mockMbMap = new MockMbMap(currentStyle); - syncLayerOrderForSingleLayer(mockMbMap, nextLayerListOrder); - const orderedStyle = mockMbMap.getStyle(); - - const nextStyle = getMockStyle(nextLayerListOrder); - const isSyncSuccesful = _.isEqual(orderedStyle, nextStyle); - expect(isSyncSuccesful).toEqual(false); - }); - - test('should move bar layer in front of foo layer (multi source)', async () => { - const fooLayer = makeSingleSourceMockLayer('foo'); - const barLayer = makeMultiSourceMockLayer('bar'); - - const currentLayerOrder = [fooLayer, barLayer]; - const nextLayerListOrder = [barLayer, fooLayer]; - - const currentStyle = getMockStyle(currentLayerOrder); - const mockMbMap = new MockMbMap(currentStyle); - syncLayerOrderForSingleLayer(mockMbMap, nextLayerListOrder); - const orderedStyle = mockMbMap.getStyle(); - - const nextStyle = getMockStyle(nextLayerListOrder); - expect(orderedStyle).toEqual(nextStyle); - }); - - test('should move bar layer in front of foo layer, but after baz layer', async () => { - const bazLayer = makeSingleSourceMockLayer('baz'); - const fooLayer = makeSingleSourceMockLayer('foo'); - const barLayer = makeSingleSourceMockLayer('bar'); - - const currentLayerOrder = [bazLayer, fooLayer, barLayer]; - const nextLayerListOrder = [bazLayer, barLayer, fooLayer]; - - const currentStyle = getMockStyle(currentLayerOrder); - const mockMbMap = new MockMbMap(currentStyle); - syncLayerOrderForSingleLayer(mockMbMap, nextLayerListOrder); - const orderedStyle = mockMbMap.getStyle(); - - const nextStyle = getMockStyle(nextLayerListOrder); - expect(orderedStyle).toEqual(nextStyle); - }); -}); diff --git a/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.test.ts b/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.test.ts new file mode 100644 index 0000000000000..273611e94ee40 --- /dev/null +++ b/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.test.ts @@ -0,0 +1,225 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +/* eslint-disable max-classes-per-file */ + +import _ from 'lodash'; +import { Map as MbMap, Layer as MbLayer, Style as MbStyle } from 'mapbox-gl'; +import { getIsTextLayer, syncLayerOrder } from './sort_layers'; +import { SPATIAL_FILTERS_LAYER_ID } from '../../../../common/constants'; +import { ILayer } from '../../../classes/layers/layer'; + +let moveCounter = 0; + +class MockMbMap { + private _style: MbStyle; + + constructor(style: MbStyle) { + this._style = _.cloneDeep(style); + } + + getStyle() { + return _.cloneDeep(this._style); + } + + moveLayer(id: string, beforeId?: string) { + moveCounter++; + + if (!this._style.layers) { + throw new Error(`Can not move layer, mapbox style does not contain layers`); + } + + const layerIndex = this._style.layers.findIndex((layer) => { + return layer.id === id; + }); + if (layerIndex === -1) { + throw new Error(`Can not move layer, layer with id: ${id} does not exist`); + } + const moveMbLayer = this._style.layers[layerIndex]; + + if (beforeId) { + const beforeLayerIndex = this._style.layers.findIndex((mbLayer) => { + return mbLayer.id === beforeId; + }); + if (beforeLayerIndex === -1) { + throw new Error(`Can not move layer, before layer with id: ${id} does not exist`); + } + this._style.layers.splice(beforeLayerIndex, 0, moveMbLayer); + } else { + const topIndex = this._style.layers.length; + this._style.layers.splice(topIndex, 0, moveMbLayer); + } + + // Remove layer from previous location + this._style.layers.splice(layerIndex, 1); + + return this; + } +} + +class MockMapLayer { + private readonly _id: string; + private readonly _areLabelsOnTop: boolean; + + constructor(id: string, areLabelsOnTop: boolean) { + this._id = id; + this._areLabelsOnTop = areLabelsOnTop; + } + + ownsMbLayerId(mbLayerId: string) { + return mbLayerId.startsWith(this._id); + } + + areLabelsOnTop() { + return this._areLabelsOnTop; + } + + getId() { + return this._id; + } +} + +test('getIsTextLayer', () => { + const paintLabelMbLayer = { + id: `mylayer_text`, + type: 'symbol', + paint: { 'text-color': 'red' }, + } as MbLayer; + expect(getIsTextLayer(paintLabelMbLayer)).toBe(true); + + const layoutLabelMbLayer = { + id: `mylayer_text`, + type: 'symbol', + layout: { 'text-size': 'red' }, + } as MbLayer; + expect(getIsTextLayer(layoutLabelMbLayer)).toBe(true); + + const iconMbLayer = { + id: `mylayer_text`, + type: 'symbol', + paint: { 'icon-color': 'house' }, + } as MbLayer; + expect(getIsTextLayer(iconMbLayer)).toBe(false); + + const circleMbLayer = { id: `mylayer_text`, type: 'circle' } as MbLayer; + expect(getIsTextLayer(circleMbLayer)).toBe(false); +}); + +describe('sortLayer', () => { + const ALPHA_LAYER_ID = 'alpha'; + const BRAVO_LAYER_ID = 'bravo'; + const CHARLIE_LAYER_ID = 'charlie'; + + const spatialFilterLayer = (new MockMapLayer( + SPATIAL_FILTERS_LAYER_ID, + false + ) as unknown) as ILayer; + const mapLayers = [ + (new MockMapLayer(CHARLIE_LAYER_ID, true) as unknown) as ILayer, + (new MockMapLayer(BRAVO_LAYER_ID, false) as unknown) as ILayer, + (new MockMapLayer(ALPHA_LAYER_ID, false) as unknown) as ILayer, + ]; + + beforeEach(() => { + moveCounter = 0; + }); + + // Initial order that styles are added to mapbox is non-deterministic and depends on the order of data fetches. + test('Should sort initial layer load order to expected order', () => { + const initialMbStyle = { + version: 0, + layers: [ + { id: `${BRAVO_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${BRAVO_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { + id: `${CHARLIE_LAYER_ID}_text`, + type: 'symbol', + paint: { 'text-color': 'red' }, + } as MbLayer, + { id: `${CHARLIE_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + ], + }; + const mbMap = new MockMbMap(initialMbStyle); + syncLayerOrder((mbMap as unknown) as MbMap, spatialFilterLayer, mapLayers); + const sortedMbStyle = mbMap.getStyle(); + const sortedMbLayerIds = sortedMbStyle.layers!.map((mbLayer) => { + return mbLayer.id; + }); + expect(sortedMbLayerIds).toEqual([ + 'charlie_fill', + 'bravo_text', + 'bravo_circle', + 'alpha_text', + 'alpha_circle', + 'charlie_text', + 'SPATIAL_FILTERS_LAYER_ID_fill', + 'SPATIAL_FILTERS_LAYER_ID_circle', + ]); + }); + + // Test case testing when layer is moved in Table of Contents + test('Should sort single layer single move to expected order', () => { + const initialMbStyle = { + version: 0, + layers: [ + { id: `${CHARLIE_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { id: `${BRAVO_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${BRAVO_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { + id: `${CHARLIE_LAYER_ID}_text`, + type: 'symbol', + paint: { 'text-color': 'red' }, + } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + ], + }; + const mbMap = new MockMbMap(initialMbStyle); + syncLayerOrder((mbMap as unknown) as MbMap, spatialFilterLayer, mapLayers); + const sortedMbStyle = mbMap.getStyle(); + const sortedMbLayerIds = sortedMbStyle.layers!.map((mbLayer) => { + return mbLayer.id; + }); + expect(sortedMbLayerIds).toEqual([ + 'charlie_fill', + 'bravo_text', + 'bravo_circle', + 'alpha_text', + 'alpha_circle', + 'charlie_text', + 'SPATIAL_FILTERS_LAYER_ID_fill', + 'SPATIAL_FILTERS_LAYER_ID_circle', + ]); + }); + + test('Should not call move layers when layers are in expected order', () => { + const initialMbStyle = { + version: 0, + layers: [ + { id: `${CHARLIE_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${BRAVO_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${BRAVO_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_text`, type: 'symbol' } as MbLayer, + { id: `${ALPHA_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + { + id: `${CHARLIE_LAYER_ID}_text`, + type: 'symbol', + paint: { 'text-color': 'red' }, + } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_fill`, type: 'fill' } as MbLayer, + { id: `${SPATIAL_FILTERS_LAYER_ID}_circle`, type: 'circle' } as MbLayer, + ], + }; + const mbMap = new MockMbMap(initialMbStyle); + syncLayerOrder((mbMap as unknown) as MbMap, spatialFilterLayer, mapLayers); + expect(moveCounter).toBe(0); + }); +}); diff --git a/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.ts b/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.ts new file mode 100644 index 0000000000000..4752eeba2376a --- /dev/null +++ b/x-pack/plugins/maps/public/connected_components/map/mb/sort_layers.ts @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Map as MbMap, Layer as MbLayer } from 'mapbox-gl'; +import { ILayer } from '../../../classes/layers/layer'; + +// "Layer" is overloaded and can mean the following +// 1) Map layer (ILayer): A single map layer consists of one to many mapbox layers. +// 2) Mapbox layer (MbLayer): Individual unit of rendering such as text, circles, polygons, or lines. + +export function getIsTextLayer(mbLayer: MbLayer) { + if (mbLayer.type !== 'symbol') { + return false; + } + + const styleNames = []; + if (mbLayer.paint) { + styleNames.push(...Object.keys(mbLayer.paint)); + } + if (mbLayer.layout) { + styleNames.push(...Object.keys(mbLayer.layout)); + } + return styleNames.some((styleName) => { + return styleName.startsWith('text-'); + }); +} + +function doesMbLayerBelongToMapLayerAndClass( + mapLayer: ILayer, + mbLayer: MbLayer, + layerClass: LAYER_CLASS +) { + if (!mapLayer.ownsMbLayerId(mbLayer.id)) { + return false; + } + + // mb layer belongs to mapLayer, now filter by layer class + if (layerClass === LAYER_CLASS.ANY) { + return true; + } + const isTextLayer = getIsTextLayer(mbLayer); + return layerClass === LAYER_CLASS.LABEL ? isTextLayer : !isTextLayer; +} + +enum LAYER_CLASS { + ANY = 'ANY', + LABEL = 'LABEL', + NON_LABEL = 'NON_LABEL', +} + +function moveMapLayer( + mbMap: MbMap, + mbLayers: MbLayer[], + mapLayer: ILayer, + layerClass: LAYER_CLASS, + beneathMbLayerId?: string +) { + mbLayers + .filter((mbLayer) => { + return doesMbLayerBelongToMapLayerAndClass(mapLayer, mbLayer, layerClass); + }) + .forEach((mbLayer) => { + mbMap.moveLayer(mbLayer.id, beneathMbLayerId); + }); +} + +function getBottomMbLayerId(mbLayers: MbLayer[], mapLayer: ILayer, layerClass: LAYER_CLASS) { + const bottomMbLayer = mbLayers.find((mbLayer) => { + return doesMbLayerBelongToMapLayerAndClass(mapLayer, mbLayer, layerClass); + }); + return bottomMbLayer ? bottomMbLayer.id : undefined; +} + +function isLayerInOrder( + mbMap: MbMap, + mapLayer: ILayer, + layerClass: LAYER_CLASS, + beneathMbLayerId?: string +) { + const mbLayers = mbMap.getStyle().layers!; // check ordering against mapbox to account for any upstream moves. + + if (!beneathMbLayerId) { + // Check that map layer is top layer + return doesMbLayerBelongToMapLayerAndClass(mapLayer, mbLayers[mbLayers.length - 1], layerClass); + } + + let inMapLayerBlock = false; + let nextMbLayerId = null; + for (let i = 0; i < mbLayers.length; i++) { + if (!inMapLayerBlock) { + if (doesMbLayerBelongToMapLayerAndClass(mapLayer, mbLayers[i], layerClass)) { + inMapLayerBlock = true; + } + } else { + // Next mbLayer not belonging to this map layer is the bottom mb layer for the next map layer + if (!doesMbLayerBelongToMapLayerAndClass(mapLayer, mbLayers[i], layerClass)) { + nextMbLayerId = mbLayers[i].id; + break; + } + } + } + + return nextMbLayerId === beneathMbLayerId; +} + +export function syncLayerOrder(mbMap: MbMap, spatialFiltersLayer: ILayer, layerList: ILayer[]) { + const mbLayers = mbMap.getStyle().layers; + if (!mbLayers || mbLayers.length === 0) { + return; + } + + // Ensure spatial filters layer is the top layer. + if (!isLayerInOrder(mbMap, spatialFiltersLayer, LAYER_CLASS.ANY)) { + moveMapLayer(mbMap, mbLayers, spatialFiltersLayer, LAYER_CLASS.ANY); + } + let beneathMbLayerId = getBottomMbLayerId(mbLayers, spatialFiltersLayer, LAYER_CLASS.ANY); + + // Sort map layer labels + [...layerList] + .reverse() + .filter((mapLayer) => { + return mapLayer.areLabelsOnTop(); + }) + .forEach((mapLayer: ILayer) => { + if (!isLayerInOrder(mbMap, mapLayer, LAYER_CLASS.LABEL, beneathMbLayerId)) { + moveMapLayer(mbMap, mbLayers, mapLayer, LAYER_CLASS.LABEL, beneathMbLayerId); + } + beneathMbLayerId = getBottomMbLayerId(mbLayers, mapLayer, LAYER_CLASS.LABEL); + }); + + // Sort map layers + [...layerList].reverse().forEach((mapLayer: ILayer) => { + const layerClass = mapLayer.areLabelsOnTop() ? LAYER_CLASS.NON_LABEL : LAYER_CLASS.ANY; + if (!isLayerInOrder(mbMap, mapLayer, layerClass, beneathMbLayerId)) { + moveMapLayer(mbMap, mbLayers, mapLayer, layerClass, beneathMbLayerId); + } + beneathMbLayerId = getBottomMbLayerId(mbLayers, mapLayer, layerClass); + }); +} diff --git a/x-pack/plugins/maps/public/connected_components/map/mb/utils.js b/x-pack/plugins/maps/public/connected_components/map/mb/utils.js index a5934038f83df..e5801afd5b601 100644 --- a/x-pack/plugins/maps/public/connected_components/map/mb/utils.js +++ b/x-pack/plugins/maps/public/connected_components/map/mb/utils.js @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import _ from 'lodash'; import { RGBAImage } from './image_utils'; export function removeOrphanedSourcesAndLayers(mbMap, layerList, spatialFilterLayer) { @@ -45,84 +44,6 @@ export function removeOrphanedSourcesAndLayers(mbMap, layerList, spatialFilterLa mbSourcesToRemove.forEach((mbSourceId) => mbMap.removeSource(mbSourceId)); } -export function moveLayerToTop(mbMap, layer) { - const mbStyle = mbMap.getStyle(); - - if (!mbStyle.layers || mbStyle.layers.length === 0) { - return; - } - - layer.getMbLayerIds().forEach((mbLayerId) => { - const mbLayer = mbMap.getLayer(mbLayerId); - if (mbLayer) { - mbMap.moveLayer(mbLayerId); - } - }); -} - -/** - * This is function assumes only a single layer moved in the layerList, compared to mbMap - * It is optimized to minimize the amount of mbMap.moveLayer calls. - * @param mbMap - * @param layerList - */ -export function syncLayerOrderForSingleLayer(mbMap, layerList) { - if (!layerList || layerList.length === 0) { - return; - } - - const mbLayers = mbMap.getStyle().layers.slice(); - const layerIds = []; - mbLayers.forEach((mbLayer) => { - const layer = layerList.find((layer) => layer.ownsMbLayerId(mbLayer.id)); - if (layer) { - layerIds.push(layer.getId()); - } - }); - - const currentLayerOrderLayerIds = _.uniq(layerIds); - - const newLayerOrderLayerIdsUnfiltered = layerList.map((l) => l.getId()); - const newLayerOrderLayerIds = newLayerOrderLayerIdsUnfiltered.filter((layerId) => - currentLayerOrderLayerIds.includes(layerId) - ); - - let netPos = 0; - let netNeg = 0; - const movementArr = currentLayerOrderLayerIds.reduce((accu, id, idx) => { - const movement = newLayerOrderLayerIds.findIndex((newOId) => newOId === id) - idx; - movement > 0 ? netPos++ : movement < 0 && netNeg++; - accu.push({ id, movement }); - return accu; - }, []); - if (netPos === 0 && netNeg === 0) { - return; - } - const movedLayerId = - (netPos >= netNeg && movementArr.find((l) => l.movement < 0).id) || - (netPos < netNeg && movementArr.find((l) => l.movement > 0).id); - const nextLayerIdx = newLayerOrderLayerIds.findIndex((layerId) => layerId === movedLayerId) + 1; - - let nextMbLayerId; - if (nextLayerIdx === newLayerOrderLayerIds.length) { - nextMbLayerId = null; - } else { - const foundLayer = mbLayers.find(({ id: mbLayerId }) => { - const layerId = newLayerOrderLayerIds[nextLayerIdx]; - const layer = layerList.find((layer) => layer.getId() === layerId); - return layer.ownsMbLayerId(mbLayerId); - }); - nextMbLayerId = foundLayer.id; - } - - const movedLayer = layerList.find((layer) => layer.getId() === movedLayerId); - mbLayers.forEach(({ id: mbLayerId }) => { - if (movedLayer.ownsMbLayerId(mbLayerId)) { - mbMap.moveLayer(mbLayerId, nextMbLayerId); - } - }); -} - export async function addSpritesheetToMap(json, imgUrl, mbMap) { const imgData = await loadSpriteSheetImageData(imgUrl); addSpriteSheetToMapFromImageData(json, imgData, mbMap); diff --git a/x-pack/plugins/maps/public/connected_components/map/mb/view.js b/x-pack/plugins/maps/public/connected_components/map/mb/view.js index 42235bfd5442e..d96deb226744b 100644 --- a/x-pack/plugins/maps/public/connected_components/map/mb/view.js +++ b/x-pack/plugins/maps/public/connected_components/map/mb/view.js @@ -7,12 +7,8 @@ import _ from 'lodash'; import React from 'react'; import { ResizeChecker } from '../../../../../../../src/plugins/kibana_utils/public'; -import { - syncLayerOrderForSingleLayer, - removeOrphanedSourcesAndLayers, - addSpritesheetToMap, - moveLayerToTop, -} from './utils'; +import { removeOrphanedSourcesAndLayers, addSpritesheetToMap } from './utils'; +import { syncLayerOrder } from './sort_layers'; import { getGlyphUrl, isRetina } from '../../../meta'; import { DECIMAL_DEGREES_PRECISION, ZOOM_PRECISION } from '../../../../common/constants'; import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp'; @@ -265,8 +261,7 @@ export class MBMapContainer extends React.Component { this.props.spatialFiltersLayer ); this.props.layerList.forEach((layer) => layer.syncLayerWithMB(this.state.mbMap)); - syncLayerOrderForSingleLayer(this.state.mbMap, this.props.layerList); - moveLayerToTop(this.state.mbMap, this.props.spatialFiltersLayer); + syncLayerOrder(this.state.mbMap, this.props.spatialFiltersLayer, this.props.layerList); }; _syncMbMapWithInspector = () => { From 21efd235f71da751786ba3c72341616dd2d00d37 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Thu, 2 Jul 2020 18:08:14 -0700 Subject: [PATCH 18/59] Fixed adding an extra space character on selecting alert variable in action text fields (#70028) * Fixed adding an extra space character on selecting alert variable in action text fields. * Made components for variables to be able to insert the variable by the cursor position * cleanup * Added variables support for all components * update on handle selections for text * Fixed functional tests --- .../components/add_message_variables.tsx | 1 + .../email/email_params.test.tsx | 4 +- .../email/email_params.tsx | 81 ++----- .../es_index/es_index_params.test.tsx | 2 +- .../es_index/es_index_params.tsx | 76 ++----- .../pagerduty/pagerduty_params.test.tsx | 2 +- .../pagerduty/pagerduty_params.tsx | 209 ++++-------------- .../server_log/server_log_params.test.tsx | 4 +- .../server_log/server_log_params.tsx | 47 +--- .../slack/slack_params.test.tsx | 8 +- .../slack/slack_params.tsx | 60 ++--- .../webhook/webhook_params.test.tsx | 8 +- .../webhook/webhook_params.tsx | 66 ++---- .../json_editor_with_message_variables.tsx | 86 +++++++ .../text_area_with_message_variables.tsx | 79 +++++++ .../text_field_with_message_variables.tsx | 71 ++++++ .../apps/triggers_actions_ui/alerts.ts | 12 +- 17 files changed, 397 insertions(+), 419 deletions(-) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx index 957c79a5c5123..655f64995d147 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx @@ -47,6 +47,7 @@ export const AddMessageVariables: React.FunctionComponent = ({ setIsVariablesPopoverOpen(true)} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx index 053541d84c431..08616b2895a80 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx @@ -28,7 +28,7 @@ describe('EmailParamsFields renders', () => { expect( wrapper.find('[data-test-subj="toEmailAddressInput"]').first().prop('selectedOptions') ).toStrictEqual([{ label: 'test@test.com' }]); - expect(wrapper.find('[data-test-subj="emailSubjectInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="emailMessageInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="subjectInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="messageTextArea"]').length > 0).toBeTruthy(); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx index 58a9685fc73d9..39c59a10fbc81 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx @@ -5,11 +5,12 @@ */ import React, { Fragment, useState, useEffect } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiFieldText, EuiComboBox, EuiTextArea, EuiButtonEmpty, EuiFormRow } from '@elastic/eui'; +import { EuiComboBox, EuiButtonEmpty, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { ActionParamsProps } from '../../../../types'; import { EmailActionParams } from '../types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; export const EmailParamsFields = ({ actionParams, @@ -33,14 +34,6 @@ export const EmailParamsFields = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - const onSelectMessageVariable = (paramsProperty: string, variable: string) => { - editAction( - paramsProperty, - ((actionParams as any)[paramsProperty] ?? '').concat(` {{${variable}}}`), - index - ); - }; - return ( - onSelectMessageVariable('subject', variable) - } - paramsProperty="subject" - /> - } > - 0 && subject !== undefined} - name="subject" - data-test-subj="emailSubjectInput" - value={subject || ''} - onChange={(e) => { - editAction('subject', e.target.value, index); - }} - onBlur={() => { - if (!subject) { - editAction('subject', '', index); - } - }} + - 0 && message !== undefined} + - onSelectMessageVariable('message', variable) - } - paramsProperty="message" - /> - } - > - 0 && message !== undefined} - value={message || ''} - name="message" - data-test-subj="emailMessageInput" - onChange={(e) => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - + errors={errors.message as string[]} + /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx index 1f8bfde2cd22b..4a6c13bf7f1a6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx @@ -20,7 +20,7 @@ describe('IndexParamsFields renders', () => { index={0} /> ); - expect(wrapper.find('[data-test-subj="actionIndexDoc"]').first().prop('value')).toBe(`{ + expect(wrapper.find('[data-test-subj="documentsJsonEditor"]').first().prop('value')).toBe(`{ "test": 123 }`); expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeTruthy(); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx index 0b095cdc26984..fd6a3d64bd4be 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx @@ -3,13 +3,11 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment } from 'react'; -import { EuiFormRow, EuiCodeEditor } from '@elastic/eui'; +import React from 'react'; import { i18n } from '@kbn/i18n'; -import { useXJsonMode } from '../../../../../../../../src/plugins/es_ui_shared/static/ace_x_json/hooks'; import { ActionParamsProps } from '../../../../types'; import { IndexActionParams } from '.././types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { JsonEditorWithMessageVariables } from '../../json_editor_with_message_variables'; export const IndexParamsFields = ({ actionParams, @@ -18,62 +16,36 @@ export const IndexParamsFields = ({ messageVariables, }: ActionParamsProps) => { const { documents } = actionParams; - const { xJsonMode, convertToJson, setXJson, xJson } = useXJsonMode( - documents && documents.length > 0 ? documents[0] : null - ); - const onSelectMessageVariable = (variable: string) => { - const value = (xJson ?? '').concat(` {{${variable}}}`); - setXJson(value); - // Keep the documents in sync with the editor content - onDocumentsChange(convertToJson(value)); - }; - function onDocumentsChange(updatedDocuments: string) { + const onDocumentsChange = (updatedDocuments: string) => { try { const documentsJSON = JSON.parse(updatedDocuments); editAction('documents', [documentsJSON], index); // eslint-disable-next-line no-empty } catch (e) {} - } + }; + return ( - - onSelectMessageVariable(variable)} - paramsProperty="documents" - /> + 0 ? ((documents[0] as unknown) as string) : '' + } + label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel', + { + defaultMessage: 'Document to index', + } + )} + aria-label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel', + { + defaultMessage: 'Code editor', } - > - { - setXJson(xjson); - // Keep the documents in sync with the editor content - onDocumentsChange(convertToJson(xjson)); - }} - /> - - + )} + onDocumentsChange={onDocumentsChange} + /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx index 94bea3c51760d..1b26b1157add9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx @@ -39,7 +39,7 @@ describe('PagerDutyParamsFields renders', () => { expect(wrapper.find('[data-test-subj="componentInput"]').length > 0).toBeTruthy(); expect(wrapper.find('[data-test-subj="groupInput"]').length > 0).toBeTruthy(); expect(wrapper.find('[data-test-subj="sourceInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="pagerdutySummaryInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="summaryInput"]').length > 0).toBeTruthy(); expect(wrapper.find('[data-test-subj="dedupKeyAddVariableButton"]').length > 0).toBeTruthy(); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx index f0b131deb1490..c8ad5f5b7080e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx @@ -4,11 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ import React, { Fragment } from 'react'; -import { EuiFieldText, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSelect } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSelect } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { ActionParamsProps } from '../../../../types'; import { PagerDutyActionParams } from '.././types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; const PagerDutyParamsFields: React.FunctionComponent> = ({ actionParams, @@ -94,15 +94,6 @@ const PagerDutyParamsFields: React.FunctionComponent { - editAction( - paramsProperty, - ((actionParams as any)[paramsProperty] ?? '').concat(` {{${variable}}}`), - index - ); - }; - return ( @@ -159,29 +150,13 @@ const PagerDutyParamsFields: React.FunctionComponent - onSelectMessageVariable('dedupKey', variable) - } - paramsProperty="dedupKey" - /> - } > - ) => { - editAction('dedupKey', e.target.value, index); - }} - onBlur={() => { - if (!dedupKey) { - editAction('dedupKey', '', index); - } - }} + @@ -196,32 +171,14 @@ const PagerDutyParamsFields: React.FunctionComponent - onSelectMessageVariable('timestamp', variable) - } - paramsProperty="timestamp" - /> - } > - 0 && timestamp !== undefined} - onChange={(e: React.ChangeEvent) => { - editAction('timestamp', e.target.value, index); - }} - onBlur={() => { - if (timestamp?.trim()) { - editAction('timestamp', timestamp.trim(), index); - } else { - editAction('timestamp', '', index); - } - }} + @@ -234,29 +191,13 @@ const PagerDutyParamsFields: React.FunctionComponent - onSelectMessageVariable('component', variable) - } - paramsProperty="component" - /> - } > - ) => { - editAction('component', e.target.value, index); - }} - onBlur={() => { - if (!component) { - editAction('component', '', index); - } - }} + onSelectMessageVariable('group', variable)} - paramsProperty="group" - /> - } > - ) => { - editAction('group', e.target.value, index); - }} - onBlur={() => { - if (!group) { - editAction('group', '', index); - } - }} + onSelectMessageVariable('source', variable)} - paramsProperty="source" - /> - } > - ) => { - editAction('source', e.target.value, index); - }} - onBlur={() => { - if (!source) { - editAction('source', '', index); - } - }} + - onSelectMessageVariable('summary', variable) - } - paramsProperty="summary" - /> - } > - 0 && summary !== undefined} - name="summary" - value={summary || ''} - data-test-subj="pagerdutySummaryInput" - onChange={(e: React.ChangeEvent) => { - editAction('summary', e.target.value, index); - }} - onBlur={() => { - if (!summary) { - editAction('summary', '', index); - } - }} + onSelectMessageVariable('class', variable)} - paramsProperty="class" - /> - } > - ) => { - editAction('class', e.target.value, index); - }} - onBlur={() => { - if (!actionParams.class) { - editAction('class', '', index); - } - }} + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx index cb905023cae44..1849a7ec9817a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx @@ -27,7 +27,7 @@ describe('ServerLogParamsFields renders', () => { expect( wrapper.find('[data-test-subj="loggingLevelSelect"]').first().prop('value') ).toStrictEqual('trace'); - expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="messageTextArea"]').length > 0).toBeTruthy(); }); test('level param field is rendered with default value if not selected', () => { @@ -47,6 +47,6 @@ describe('ServerLogParamsFields renders', () => { expect( wrapper.find('[data-test-subj="loggingLevelSelect"]').first().prop('value') ).toStrictEqual('info'); - expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="messageTextArea"]').length > 0).toBeTruthy(); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx index c19aec2a993db..b79fa0ea94050 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx @@ -5,10 +5,10 @@ */ import React, { Fragment, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiSelect, EuiTextArea, EuiFormRow } from '@elastic/eui'; +import { EuiSelect, EuiFormRow } from '@elastic/eui'; import { ActionParamsProps } from '../../../../types'; import { ServerLogActionParams } from '.././types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; export const ServerLogParamsFields: React.FunctionComponent { - editAction(paramsProperty, (message ?? '').concat(` {{${variable}}}`), index); - }; - return ( - 0 && message !== undefined} + - onSelectMessageVariable('message', variable) - } - paramsProperty="message" - /> - } - > - 0 && message !== undefined} - value={message || ''} - name="message" - data-test-subj="loggingMessageInput" - onChange={(e) => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - + errors={errors.message as string[]} + /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx index 6efa8d64dafbe..8777c8f48e0f5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx @@ -20,9 +20,9 @@ describe('SlackParamsFields renders', () => { index={0} /> ); - expect(wrapper.find('[data-test-subj="slackMessageTextArea"]').length > 0).toBeTruthy(); - expect( - wrapper.find('[data-test-subj="slackMessageTextArea"]').first().prop('value') - ).toStrictEqual('test message'); + expect(wrapper.find('[data-test-subj="messageTextArea"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="messageTextArea"]').first().prop('value')).toStrictEqual( + 'test message' + ); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx index 5789d37a6bcf6..80a2f9d7709cc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx @@ -3,12 +3,11 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, useEffect } from 'react'; -import { EuiTextArea, EuiFormRow } from '@elastic/eui'; +import React, { useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { ActionParamsProps } from '../../../../types'; import { SlackActionParams } from '../types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; const SlackParamsFields: React.FunctionComponent> = ({ actionParams, @@ -26,50 +25,21 @@ const SlackParamsFields: React.FunctionComponent { - editAction(paramsProperty, (message ?? '').concat(` {{${variable}}}`), index); - }; - return ( - - 0 && message !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel', - { - defaultMessage: 'Message', - } - )} - labelAppend={ - - onSelectMessageVariable('message', variable) - } - paramsProperty="message" - /> + - 0 && message !== undefined} - name="message" - value={message || ''} - data-test-subj="slackMessageTextArea" - onChange={(e) => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - - + )} + errors={errors.message as string[]} + /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx index 665114bd86e9b..9e57d7ae608cc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx @@ -20,10 +20,10 @@ describe('WebhookParamsFields renders', () => { index={0} /> ); - expect(wrapper.find('[data-test-subj="webhookBodyEditor"]').length > 0).toBeTruthy(); - expect( - wrapper.find('[data-test-subj="webhookBodyEditor"]').first().prop('value') - ).toStrictEqual('test message'); + expect(wrapper.find('[data-test-subj="bodyJsonEditor"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="bodyJsonEditor"]').first().prop('value')).toStrictEqual( + 'test message' + ); expect(wrapper.find('[data-test-subj="bodyAddVariableButton"]').length > 0).toBeTruthy(); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx index 9e802b96e16be..1dfd9e3edc2c5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx @@ -3,12 +3,11 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment } from 'react'; -import { EuiFormRow, EuiCodeEditor } from '@elastic/eui'; +import React from 'react'; import { i18n } from '@kbn/i18n'; import { ActionParamsProps } from '../../../../types'; import { WebhookActionParams } from '../types'; -import { AddMessageVariables } from '../../add_message_variables'; +import { JsonEditorWithMessageVariables } from '../../json_editor_with_message_variables'; const WebhookParamsFields: React.FunctionComponent> = ({ actionParams, @@ -18,49 +17,28 @@ const WebhookParamsFields: React.FunctionComponent { const { body } = actionParams; - const onSelectMessageVariable = (paramsProperty: string, variable: string) => { - editAction(paramsProperty, (body ?? '').concat(` {{${variable}}}`), index); - }; return ( - - 0 && body !== undefined} - fullWidth - error={errors.body} - labelAppend={ - onSelectMessageVariable('body', variable)} - paramsProperty="body" - /> + - { - editAction('body', json, index); - }} - /> - - + )} + aria-label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyCodeEditorAriaLabel', + { + defaultMessage: 'Code editor', + } + )} + errors={errors.body as string[]} + onDocumentsChange={(json: string) => { + editAction('body', json, index); + }} + /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.tsx new file mode 100644 index 0000000000000..2aac389dce5ec --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useState } from 'react'; +import { EuiCodeEditor, EuiFormRow } from '@elastic/eui'; +import './add_message_variables.scss'; +import { useXJsonMode } from '../../../../../../src/plugins/es_ui_shared/static/ace_x_json/hooks'; + +import { AddMessageVariables } from './add_message_variables'; + +interface Props { + messageVariables: string[] | undefined; + paramsProperty: string; + inputTargetValue: string; + label: string; + errors?: string[]; + areaLabel?: string; + onDocumentsChange: (data: string) => void; +} + +export const JsonEditorWithMessageVariables: React.FunctionComponent = ({ + messageVariables, + paramsProperty, + inputTargetValue, + label, + errors, + areaLabel, + onDocumentsChange, +}) => { + const [cursorPosition, setCursorPosition] = useState(null); + + const { xJsonMode, convertToJson, setXJson, xJson } = useXJsonMode(inputTargetValue ?? null); + + const onSelectMessageVariable = (variable: string) => { + const templatedVar = `{{${variable}}}`; + let newValue = ''; + if (cursorPosition) { + const cursor = cursorPosition.getCursor(); + cursorPosition.session.insert(cursor, templatedVar); + newValue = cursorPosition.session.getValue(); + } else { + newValue = templatedVar; + } + setXJson(newValue); + // Keep the documents in sync with the editor content + onDocumentsChange(convertToJson(newValue)); + }; + + const onClickWithMessageVariable = (_value: any) => { + setCursorPosition(_value); + }; + + return ( + 0 && inputTargetValue !== undefined} + label={label} + labelAppend={ + onSelectMessageVariable(variable)} + paramsProperty={paramsProperty} + /> + } + > + { + setXJson(xjson); + // Keep the documents in sync with the editor content + onDocumentsChange(convertToJson(xjson)); + }} + onCursorChange={(_value: any) => onClickWithMessageVariable(_value)} + /> + + ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx new file mode 100644 index 0000000000000..0b8a9349ad5fb --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useState } from 'react'; +import { EuiTextArea, EuiFormRow } from '@elastic/eui'; +import './add_message_variables.scss'; +import { AddMessageVariables } from './add_message_variables'; + +interface Props { + messageVariables: string[] | undefined; + paramsProperty: string; + index: number; + inputTargetValue?: string; + editAction: (property: string, value: any, index: number) => void; + label: string; + errors?: string[]; +} + +export const TextAreaWithMessageVariables: React.FunctionComponent = ({ + messageVariables, + paramsProperty, + index, + inputTargetValue, + editAction, + label, + errors, +}) => { + const [currentTextElement, setCurrentTextElement] = useState(null); + + const onSelectMessageVariable = (variable: string) => { + const templatedVar = `{{${variable}}}`; + const startPosition = currentTextElement?.selectionStart ?? 0; + const endPosition = currentTextElement?.selectionEnd ?? 0; + const newValue = + (inputTargetValue ?? '').substring(0, startPosition) + + templatedVar + + (inputTargetValue ?? '').substring(endPosition, (inputTargetValue ?? '').length); + editAction(paramsProperty, newValue, index); + }; + + const onChangeWithMessageVariable = (e: React.ChangeEvent) => { + editAction(paramsProperty, e.target.value, index); + }; + + return ( + 0 && inputTargetValue !== undefined} + label={label} + labelAppend={ + onSelectMessageVariable(variable)} + paramsProperty={paramsProperty} + /> + } + > + 0 && inputTargetValue !== undefined} + name={paramsProperty} + value={inputTargetValue} + data-test-subj={`${paramsProperty}TextArea`} + onChange={(e: React.ChangeEvent) => onChangeWithMessageVariable(e)} + onFocus={(e: React.FocusEvent) => { + setCurrentTextElement(e.target); + }} + onBlur={() => { + if (!inputTargetValue) { + editAction(paramsProperty, '', index); + } + }} + /> + + ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.tsx new file mode 100644 index 0000000000000..e280fd3f34e99 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.tsx @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useState } from 'react'; +import { EuiFieldText } from '@elastic/eui'; +import './add_message_variables.scss'; +import { AddMessageVariables } from './add_message_variables'; + +interface Props { + messageVariables: string[] | undefined; + paramsProperty: string; + index: number; + inputTargetValue?: string; + editAction: (property: string, value: any, index: number) => void; + errors?: string[]; +} + +export const TextFieldWithMessageVariables: React.FunctionComponent = ({ + messageVariables, + paramsProperty, + index, + inputTargetValue, + editAction, + errors, +}) => { + const [currentTextElement, setCurrentTextElement] = useState(null); + + const onSelectMessageVariable = (variable: string) => { + const templatedVar = `{{${variable}}}`; + const startPosition = currentTextElement?.selectionStart ?? 0; + const endPosition = currentTextElement?.selectionEnd ?? 0; + const newValue = + (inputTargetValue ?? '').substring(0, startPosition) + + templatedVar + + (inputTargetValue ?? '').substring(endPosition, (inputTargetValue ?? '').length); + editAction(paramsProperty, newValue, index); + }; + + const onChangeWithMessageVariable = (e: React.ChangeEvent) => { + editAction(paramsProperty, e.target.value, index); + }; + + return ( + 0 && inputTargetValue !== undefined} + data-test-subj={`${paramsProperty}Input`} + value={inputTargetValue} + onChange={(e: React.ChangeEvent) => onChangeWithMessageVariable(e)} + onFocus={(e: React.FocusEvent) => { + setCurrentTextElement(e.target); + }} + onBlur={(e: React.FocusEvent) => { + if (!inputTargetValue) { + editAction(paramsProperty, '', index); + } + }} + append={ + onSelectMessageVariable(variable)} + paramsProperty={paramsProperty} + /> + } + /> + ); +}; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts index 13bf47676cc09..2225316bba80f 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alerts.ts @@ -75,9 +75,19 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await find.clickByCssSelector('[data-test-subj="saveActionButtonModal"]:not(disabled)'); const createdConnectorToastTitle = await pageObjects.common.closeToast(); expect(createdConnectorToastTitle).to.eql(`Created '${slackConnectorName}'`); - await testSubjects.setValue('slackMessageTextArea', 'test message'); + await testSubjects.setValue('messageTextArea', 'test message '); await testSubjects.click('messageAddVariableButton'); await testSubjects.click('variableMenuButton-0'); + const messageTextArea = await find.byCssSelector('[data-test-subj="messageTextArea"]'); + expect(await messageTextArea.getAttribute('value')).to.eql('test message {{alertId}}'); + await messageTextArea.type(' some additional text '); + + await testSubjects.click('messageAddVariableButton'); + await testSubjects.click('variableMenuButton-1'); + + expect(await messageTextArea.getAttribute('value')).to.eql( + 'test message {{alertId}} some additional text {{alertName}}' + ); await testSubjects.click('saveAlertButton'); const toastTitle = await pageObjects.common.closeToast(); From 5226ea21126aeae84ffc923691d4e551a60c2165 Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Thu, 2 Jul 2020 23:27:40 -0400 Subject: [PATCH 19/59] [Alerting] document requirements for developing new action types (#69164) * [Alerting] document requirements for developing new action types resolves https://github.com/elastic/kibana/issues/67864 Adding this to the actions README.md, it should be published as asciidocs at GA. --- x-pack/plugins/actions/README.md | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/x-pack/plugins/actions/README.md b/x-pack/plugins/actions/README.md index 605676cee363d..494f2f38e8bff 100644 --- a/x-pack/plugins/actions/README.md +++ b/x-pack/plugins/actions/README.md @@ -71,6 +71,7 @@ Table of Contents - [`params`](#params-7) - [`subActionParams (pushToService)`](#subactionparams-pushtoservice-1) - [Command Line Utility](#command-line-utility) +- [Developing New Action Types](#developing-new-action-types) ## Terminology @@ -606,3 +607,39 @@ $ kbn-action create .slack "post to slack" '{"webhookUrl": "https://hooks.slack. "version": "WzMsMV0=" } ``` + +# Developing New Action Types + +When creating a new action type, your plugin will eventually call `server.plugins.actions.setup.registerType()` to register the type with the actions plugin, but there are some additional things to think about about and implement. + +Consider working with the alerting team on early structure /design feedback of new actions, especially as the APIs and infrastructure are still under development. + +## licensing + +Currently actions are licensed as "basic" if the action only interacts with the stack, eg the server log and es index actions. Other actions are at least "gold" level. + +## plugin location + +Currently actions that are licensed as "basic" **MUST** be implemented in the actions plugin, other actions can be implemented in any other plugin that pre-reqs the actions plugin. If the new action is generic across the stack, it probably belongs in the actions plugin, but if your action is very specific to a plugin/solution, it might be easiest to implement it in the plugin/solution. Keep in mind that if Kibana is run without the plugin being enabled, any actions defined in that plugin will not run, nor will those actions be available via APIs or UI. + +Actions that take URLs or hostnames should check that those values are whitelisted. The whitelisting utilities are currently internal to the actions plugin, and so such actions will need to be implemented in the actions plugin. Longer-term, we will expose these utilities so they can be used by alerts implemented in other plugins; see [issue #64659](https://github.com/elastic/kibana/issues/64659). + +## documentation + +You should also create some asciidoc for the new action type. An entry should be made in the action type index - [`docs/user/alerting/action-types.asciidoc`](../../../docs/user/alerting/action-types.asciidoc) which points to a new document for the action type that should be in the directory [`docs/user/alerting/action-types`](../../../docs/user/alerting/action-types). + +## tests + +The action type should have both jest tests and functional tests. For functional tests, if your action interacts with a 3rd party service via HTTP, you may be able to create a simulator for your service, to test with. See the existing functional test servers in the directory [`x-pack/test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server`](../../test/alerting_api_integration/common/fixtures/plugins/actions_simulators/server) + +## action type config and secrets + +Action types must define `config` and `secrets` which are used to create connectors. This data should be described with `@kbn/config-schema` object schemas, and you **MUST NOT** use `schema.maybe()` to define properties. + +This is due to the fact that the structures are persisted in saved objects, which performs partial updates on the persisted data. If a property value is already persisted, but an update either doesn't include the property, or sets it to `undefined`, the persisted value will not be changed. Beyond this being a semantic error in general, it also ends up invalidating the encryption used to save secrets, and will render the secrets will not be able to be unencrypted later. + +Instead of `schema.maybe()`, use `schema.nullable()`, which is the same as `schema.maybe()` except that when passed an `undefined` value, the object returned from the validation will be set to `null`. The resulting type will be `property-type | null`, whereas with `schema.maybe()` it would be `property-type | undefined`. + +## user interface + +In order to make this action usable in the Kibana UI, you will need to provide all the UI editing aspects of the action. The existing action type user interfaces are defined in [`x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types`](../triggers_actions_ui/public/application/components/builtin_action_types). For more information, see the [UI documentation](../triggers_actions_ui/README.md#create-and-register-new-action-type-ui). From 54348a761e4fa075d6537dd2f459efdb0a37c1fe Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Thu, 2 Jul 2020 23:26:56 -0700 Subject: [PATCH 20/59] [Ingest Manager] Add ability to sort to agent configs and package configs (#70676) * Add sorting params to list endpoints; allow sorting on agent config and package config tables; normalize casing of 'desc' and 'asc' * Fix es archiver data * Fix tests --- .../common/types/rest_spec/common.ts | 6 ++-- .../ingest_manager/hooks/index.ts | 1 + .../ingest_manager/hooks/use_sorting.tsx | 16 +++++++++ .../step_select_config.tsx | 7 +++- .../package_configs/package_configs_table.tsx | 2 ++ .../sections/agent_config/list_page/index.tsx | 32 ++++++++++++----- .../agent_reassign_config_flyout/index.tsx | 5 ++- .../server/saved_objects/index.ts | 3 +- .../server/services/agent_config.ts | 5 +-- .../server/services/agents/crud.ts | 36 +++++++------------ .../server/services/agents/events.ts | 2 +- .../server/services/agents/status.ts | 2 +- .../services/api_keys/enrollment_api_key.ts | 2 +- .../server/services/package_config.ts | 4 ++- .../server/types/rest_spec/common.ts | 6 ++-- .../es_archives/fleet/agents/data.json | 3 +- 16 files changed, 83 insertions(+), 49 deletions(-) create mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_sorting.tsx diff --git a/x-pack/plugins/ingest_manager/common/types/rest_spec/common.ts b/x-pack/plugins/ingest_manager/common/types/rest_spec/common.ts index c52471ccfb4f5..0d1f72afa16f1 100644 --- a/x-pack/plugins/ingest_manager/common/types/rest_spec/common.ts +++ b/x-pack/plugins/ingest_manager/common/types/rest_spec/common.ts @@ -5,7 +5,9 @@ */ export interface ListWithKuery { - page: number; - perPage: number; + page?: number; + perPage?: number; + sortField?: string; + sortOrder?: 'desc' | 'asc'; kuery?: string; } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/index.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/index.ts index 6ebfd3f28fd9b..36b7d412bf276 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/index.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/index.ts @@ -13,6 +13,7 @@ export { useLink } from './use_link'; export { useKibanaLink } from './use_kibana_link'; export { usePackageIconType, UsePackageIconType } from './use_package_icon_type'; export { usePagination, Pagination } from './use_pagination'; +export { useSorting } from './use_sorting'; export { useDebounce } from './use_debounce'; export * from './use_request'; export * from './use_input'; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_sorting.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_sorting.tsx new file mode 100644 index 0000000000000..b00809249897b --- /dev/null +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_sorting.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import { useState } from 'react'; +import { CriteriaWithPagination } from '@elastic/eui/src/components/basic_table/basic_table'; + +export function useSorting(defaultSorting: CriteriaWithPagination['sort']) { + const [sorting, setSorting] = useState['sort']>(defaultSorting); + + return { + sorting, + setSorting, + }; +} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_select_config.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_select_config.tsx index 70668c2856f98..849d7bfc63f34 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_select_config.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_select_config.tsx @@ -31,7 +31,12 @@ export const StepSelectConfig: React.FunctionComponent<{ data: agentConfigsData, error: agentConfigsError, isLoading: isAgentConfigsLoading, - } = useGetAgentConfigs(); + } = useGetAgentConfigs({ + page: 1, + perPage: 1000, + sortField: 'name', + sortOrder: 'asc', + }); const agentConfigs = agentConfigsData?.items || []; const agentConfigsById = agentConfigs.reduce( (acc: { [key: string]: GetAgentConfigsResponseItem }, config) => { diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/details_page/components/package_configs/package_configs_table.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/details_page/components/package_configs/package_configs_table.tsx index 19243084f6821..42d1075e2ee1f 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/details_page/components/package_configs/package_configs_table.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/details_page/components/package_configs/package_configs_table.tsx @@ -118,6 +118,7 @@ export const PackageConfigsTable: React.FunctionComponent = ({ (): EuiInMemoryTableProps['columns'] => [ { field: 'name', + sortable: true, name: i18n.translate( 'xpack.ingestManager.configDetails.packageConfigsTable.nameColumnTitle', { @@ -137,6 +138,7 @@ export const PackageConfigsTable: React.FunctionComponent = ({ }, { field: 'packageTitle', + sortable: true, name: i18n.translate( 'xpack.ingestManager.configDetails.packageConfigsTable.packageNameColumnTitle', { diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/list_page/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/list_page/index.tsx index 0a9daf0038aab..4e79bd4fa7997 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/list_page/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/list_page/index.tsx @@ -17,6 +17,7 @@ import { EuiTableFieldDataColumnType, EuiTextColor, } from '@elastic/eui'; +import { CriteriaWithPagination } from '@elastic/eui/src/components/basic_table/basic_table'; import { i18n } from '@kbn/i18n'; import { FormattedMessage, FormattedDate } from '@kbn/i18n/react'; import { useHistory } from 'react-router-dom'; @@ -27,6 +28,7 @@ import { useCapabilities, useGetAgentConfigs, usePagination, + useSorting, useLink, useConfig, useUrlParams, @@ -84,6 +86,10 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { : urlParams.kuery ?? '' ); const { pagination, pageSizeOptions, setPagination } = usePagination(); + const { sorting, setSorting } = useSorting({ + field: 'updated_at', + direction: 'desc', + }); const history = useHistory(); const isCreateAgentConfigFlyoutOpen = 'create' in urlParams; const setIsCreateAgentConfigFlyoutOpen = useCallback( @@ -106,6 +112,8 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { const { isLoading, data: agentConfigData, sendRequest } = useGetAgentConfigs({ page: pagination.currentPage, perPage: pagination.pageSize, + sortField: sorting?.field, + sortOrder: sorting?.direction, kuery: search, }); @@ -116,6 +124,7 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { > = [ { field: 'name', + sortable: true, name: i18n.translate('xpack.ingestManager.agentConfigList.nameColumnTitle', { defaultMessage: 'Name', }), @@ -158,6 +167,7 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { }, { field: 'updated_at', + sortable: true, name: i18n.translate('xpack.ingestManager.agentConfigList.updatedOnColumnTitle', { defaultMessage: 'Last updated on', }), @@ -240,6 +250,16 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { [createAgentConfigButton] ); + const onTableChange = (criteria: CriteriaWithPagination) => { + const newPagination = { + ...pagination, + currentPage: criteria.page.index + 1, + pageSize: criteria.page.size, + }; + setPagination(newPagination); + setSorting(criteria.sort); + }; + return ( {isCreateAgentConfigFlyoutOpen ? ( @@ -276,7 +296,7 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { - loading={isLoading} hasActions={true} noItemsMessage={ @@ -314,14 +334,8 @@ export const AgentConfigListPage: React.FunctionComponent<{}> = () => { totalItemCount: agentConfigData ? agentConfigData.total : 0, pageSizeOptions, }} - onChange={({ page }: { page: { index: number; size: number } }) => { - const newPagination = { - ...pagination, - currentPage: page.index + 1, - pageSize: page.size, - }; - setPagination(newPagination); - }} + sorting={{ sort: sorting }} + onChange={onTableChange} /> ); diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_reassign_config_flyout/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_reassign_config_flyout/index.tsx index 450def54ba1d0..592ca7f7b8380 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_reassign_config_flyout/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_reassign_config_flyout/index.tsx @@ -36,7 +36,10 @@ export const AgentReassignConfigFlyout: React.FunctionComponent = ({ onCl agent.config_id ); - const agentConfigsRequest = useGetAgentConfigs(); + const agentConfigsRequest = useGetAgentConfigs({ + page: 1, + perPage: 1000, + }); const agentConfigs = agentConfigsRequest.data ? agentConfigsRequest.data.items : []; const [isSubmitting, setIsSubmitting] = useState(false); diff --git a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts index 98de9ac217af9..9819a4fa5d750 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts @@ -119,8 +119,7 @@ const savedObjectTypes: { [key: string]: SavedObjectsType } = { }, mappings: { properties: { - id: { type: 'keyword' }, - name: { type: 'text' }, + name: { type: 'keyword' }, description: { type: 'text' }, namespace: { type: 'keyword' }, is_default: { type: 'boolean' }, diff --git a/x-pack/plugins/ingest_manager/server/services/agent_config.ts b/x-pack/plugins/ingest_manager/server/services/agent_config.ts index ada35d1825069..bd00727714c33 100644 --- a/x-pack/plugins/ingest_manager/server/services/agent_config.ts +++ b/x-pack/plugins/ingest_manager/server/services/agent_config.ts @@ -143,10 +143,12 @@ class AgentConfigService { soClient: SavedObjectsClientContract, options: ListWithKuery ): Promise<{ items: AgentConfig[]; total: number; page: number; perPage: number }> { - const { page = 1, perPage = 20, kuery } = options; + const { page = 1, perPage = 20, sortField = 'updated_at', sortOrder = 'desc', kuery } = options; const agentConfigs = await soClient.find({ type: SAVED_OBJECT_TYPE, + sortField, + sortOrder, page, perPage, // To ensure users don't need to know about SO data structure... @@ -273,7 +275,6 @@ class AgentConfigService { soClient, id, { - ...oldAgentConfig, package_configs: uniq( [...((oldAgentConfig.package_configs || []) as string[])].filter( (pkgConfigId) => !packageConfigIds.includes(pkgConfigId) diff --git a/x-pack/plugins/ingest_manager/server/services/agents/crud.ts b/x-pack/plugins/ingest_manager/server/services/agents/crud.ts index c78a9ff8bb7b5..4420135aec952 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/crud.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/crud.ts @@ -12,20 +12,24 @@ import { AGENT_TYPE_EPHEMERAL, AGENT_POLLING_THRESHOLD_MS, } from '../../constants'; -import { AgentSOAttributes, Agent, AgentEventSOAttributes } from '../../types'; +import { AgentSOAttributes, Agent, AgentEventSOAttributes, ListWithKuery } from '../../types'; import { savedObjectToAgent } from './saved_objects'; import { escapeSearchQueryPhrase } from '../saved_object'; export async function listAgents( soClient: SavedObjectsClientContract, - options: { - page: number; - perPage: number; - kuery?: string; + options: ListWithKuery & { showInactive: boolean; } ) { - const { page, perPage, kuery, showInactive = false } = options; + const { + page = 1, + perPage = 20, + sortField = 'enrolled_at', + sortOrder = 'desc', + kuery, + showInactive = false, + } = options; const filters = []; @@ -49,10 +53,11 @@ export async function listAgents( const { saved_objects, total } = await soClient.find({ type: AGENT_SAVED_OBJECT_TYPE, + sortField, + sortOrder, page, perPage, filter: _joinFilters(filters), - ..._getSortFields(), }); const agents: Agent[] = saved_objects.map(savedObjectToAgent); @@ -137,23 +142,6 @@ export async function deleteAgent(soClient: SavedObjectsClientContract, agentId: }); } -function _getSortFields(sortOption?: string) { - switch (sortOption) { - case 'ASC': - return { - sortField: 'enrolled_at', - sortOrder: 'ASC', - }; - - case 'DESC': - default: - return { - sortField: 'enrolled_at', - sortOrder: 'DESC', - }; - } -} - function _joinFilters(filters: string[], operator = 'AND') { return filters.reduce((acc: string | undefined, filter) => { if (acc) { diff --git a/x-pack/plugins/ingest_manager/server/services/agents/events.ts b/x-pack/plugins/ingest_manager/server/services/agents/events.ts index b6d87c9ca5b2f..55970607c74ab 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/events.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/events.ts @@ -31,7 +31,7 @@ export async function getAgentEvents( perPage, page, sortField: 'timestamp', - sortOrder: 'DESC', + sortOrder: 'desc', defaultSearchOperator: 'AND', search: agentId, searchFields: ['agent_id'], diff --git a/x-pack/plugins/ingest_manager/server/services/agents/status.ts b/x-pack/plugins/ingest_manager/server/services/agents/status.ts index 0efb202eff532..016a2344cf532 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/status.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/status.ts @@ -61,7 +61,7 @@ async function getEventsCount(soClient: SavedObjectsClientContract, configId?: s perPage: 0, page: 1, sortField: 'timestamp', - sortOrder: 'DESC', + sortOrder: 'desc', defaultSearchOperator: 'AND', }); diff --git a/x-pack/plugins/ingest_manager/server/services/api_keys/enrollment_api_key.ts b/x-pack/plugins/ingest_manager/server/services/api_keys/enrollment_api_key.ts index 3b003f47eb6f9..02e2c8151fac7 100644 --- a/x-pack/plugins/ingest_manager/server/services/api_keys/enrollment_api_key.ts +++ b/x-pack/plugins/ingest_manager/server/services/api_keys/enrollment_api_key.ts @@ -29,7 +29,7 @@ export async function listEnrollmentApiKeys( page, perPage, sortField: 'created_at', - sortOrder: 'DESC', + sortOrder: 'desc', filter: kuery && kuery !== '' ? kuery.replace( diff --git a/x-pack/plugins/ingest_manager/server/services/package_config.ts b/x-pack/plugins/ingest_manager/server/services/package_config.ts index c886f4868ad30..5a7546bfee2e0 100644 --- a/x-pack/plugins/ingest_manager/server/services/package_config.ts +++ b/x-pack/plugins/ingest_manager/server/services/package_config.ts @@ -145,10 +145,12 @@ class PackageConfigService { soClient: SavedObjectsClientContract, options: ListWithKuery ): Promise<{ items: PackageConfig[]; total: number; page: number; perPage: number }> { - const { page = 1, perPage = 20, kuery } = options; + const { page = 1, perPage = 20, sortField = 'updated_at', sortOrder = 'desc', kuery } = options; const packageConfigs = await soClient.find({ type: SAVED_OBJECT_TYPE, + sortField, + sortOrder, page, perPage, // To ensure users don't need to know about SO data structure... diff --git a/x-pack/plugins/ingest_manager/server/types/rest_spec/common.ts b/x-pack/plugins/ingest_manager/server/types/rest_spec/common.ts index 2c8134d2e8f92..dc0f111680490 100644 --- a/x-pack/plugins/ingest_manager/server/types/rest_spec/common.ts +++ b/x-pack/plugins/ingest_manager/server/types/rest_spec/common.ts @@ -6,8 +6,10 @@ import { schema, TypeOf } from '@kbn/config-schema'; export const ListWithKuerySchema = schema.object({ - page: schema.number({ defaultValue: 1 }), - perPage: schema.number({ defaultValue: 20 }), + page: schema.maybe(schema.number({ defaultValue: 1 })), + perPage: schema.maybe(schema.number({ defaultValue: 20 })), + sortField: schema.maybe(schema.string()), + sortOrder: schema.maybe(schema.oneOf([schema.literal('desc'), schema.literal('asc')])), kuery: schema.maybe(schema.string()), }); diff --git a/x-pack/test/functional/es_archives/fleet/agents/data.json b/x-pack/test/functional/es_archives/fleet/agents/data.json index c317aad8ba05b..b3d49199b0d9e 100644 --- a/x-pack/test/functional/es_archives/fleet/agents/data.json +++ b/x-pack/test/functional/es_archives/fleet/agents/data.json @@ -220,8 +220,7 @@ ], "revision": 2, "updated_at": "2020-05-07T19:34:42.533Z", - "updated_by": "system", - "id": "config1" + "updated_by": "system" } } } From 97ad58c5299b06d140b93e914f99b50ce5b9e239 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 3 Jul 2020 08:30:17 +0100 Subject: [PATCH 21/59] [ML] Changing shared module setup function parameters (#70589) * [ML] Changing shared module setup function parameters * changes based on review * adding comments for documentation Co-authored-by: Elastic Machine --- .../models/data_recognizer/data_recognizer.ts | 2 +- x-pack/plugins/ml/server/routes/modules.ts | 6 ++--- .../ml/server/routes/schemas/modules.ts | 24 +++++++++---------- x-pack/plugins/ml/server/shared.ts | 1 + .../shared_services/providers/modules.ts | 24 ++++++++++++++++--- 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts index 1ed9df8da65dd..ae9a56f00a5c1 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts +++ b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts @@ -362,7 +362,7 @@ export class DataRecognizer { // takes a module config id, an optional jobPrefix and the request object // creates all of the jobs, datafeeds and savedObjects listed in the module config. // if any of the savedObjects already exist, they will not be overwritten. - async setupModuleItems( + async setup( moduleId: string, jobPrefix?: string, groups?: string[], diff --git a/x-pack/plugins/ml/server/routes/modules.ts b/x-pack/plugins/ml/server/routes/modules.ts index ade3d3eca90ea..88d24a1b86b6d 100644 --- a/x-pack/plugins/ml/server/routes/modules.ts +++ b/x-pack/plugins/ml/server/routes/modules.ts @@ -38,7 +38,7 @@ function getModule(context: RequestHandlerContext, moduleId: string) { } } -function saveModuleItems( +function setup( context: RequestHandlerContext, moduleId: string, prefix?: string, @@ -57,7 +57,7 @@ function saveModuleItems( context.ml!.mlClient.callAsCurrentUser, context.core.savedObjects.client ); - return dr.setupModuleItems( + return dr.setup( moduleId, prefix, groups, @@ -438,7 +438,7 @@ export function dataRecognizer({ router, mlLicense }: RouteInitialization) { estimateModelMemory, } = request.body as TypeOf; - const result = await saveModuleItems( + const result = await setup( context, moduleId, prefix, diff --git a/x-pack/plugins/ml/server/routes/schemas/modules.ts b/x-pack/plugins/ml/server/routes/schemas/modules.ts index 23148c14c734e..e2b58cf2ce8f2 100644 --- a/x-pack/plugins/ml/server/routes/schemas/modules.ts +++ b/x-pack/plugins/ml/server/routes/schemas/modules.ts @@ -71,19 +71,19 @@ export const setupModuleBodySchema = schema.object({ estimateModelMemory: schema.maybe(schema.boolean()), }); -export const getModuleIdParamSchema = (optional = false) => { - const stringType = schema.string(); - return schema.object({ - /** - * ID of the module. - */ - moduleId: optional ? schema.maybe(stringType) : stringType, - }); -}; - -export const optionalModuleIdParamSchema = getModuleIdParamSchema(true); +export const optionalModuleIdParamSchema = schema.object({ + /** + * ID of the module. + */ + moduleId: schema.maybe(schema.string()), +}); -export const moduleIdParamSchema = getModuleIdParamSchema(false); +export const moduleIdParamSchema = schema.object({ + /** + * ID of the module. + */ + moduleId: schema.string(), +}); export const modulesIndexPatternTitleSchema = schema.object({ /** diff --git a/x-pack/plugins/ml/server/shared.ts b/x-pack/plugins/ml/server/shared.ts index 7b4b2a55c29f1..3fca8ea1ba047 100644 --- a/x-pack/plugins/ml/server/shared.ts +++ b/x-pack/plugins/ml/server/shared.ts @@ -7,3 +7,4 @@ export * from '../common/types/anomalies'; export * from '../common/types/anomaly_detection_jobs'; export * from './lib/capabilities/errors'; +export { ModuleSetupPayload } from './shared_services/providers/modules'; diff --git a/x-pack/plugins/ml/server/shared_services/providers/modules.ts b/x-pack/plugins/ml/server/shared_services/providers/modules.ts index d1666c5c1bf7b..27935fd6fe21d 100644 --- a/x-pack/plugins/ml/server/shared_services/providers/modules.ts +++ b/x-pack/plugins/ml/server/shared_services/providers/modules.ts @@ -5,8 +5,13 @@ */ import { LegacyAPICaller, KibanaRequest, SavedObjectsClientContract } from 'kibana/server'; +import { TypeOf } from '@kbn/config-schema'; import { DataRecognizer } from '../../models/data_recognizer'; import { SharedServicesChecks } from '../shared_services'; +import { moduleIdParamSchema, setupModuleBodySchema } from '../../routes/schemas/modules'; + +export type ModuleSetupPayload = TypeOf & + TypeOf; export interface ModulesProvider { modulesProvider( @@ -17,7 +22,7 @@ export interface ModulesProvider { recognize: DataRecognizer['findMatches']; getModule: DataRecognizer['getModule']; listModules: DataRecognizer['listModules']; - setupModuleItems: DataRecognizer['setupModuleItems']; + setup(payload: ModuleSetupPayload): ReturnType; }; } @@ -52,11 +57,24 @@ export function getModulesProvider({ return dr.listModules(); }, - async setupModuleItems(...args) { + async setup(payload: ModuleSetupPayload) { isFullLicense(); await hasMlCapabilities(['canCreateJob']); - return dr.setupModuleItems(...args); + return dr.setup( + payload.moduleId, + payload.prefix, + payload.groups, + payload.indexPatternName, + payload.query, + payload.useDedicatedIndex, + payload.startDatafeed, + payload.start, + payload.end, + payload.jobOverrides, + payload.datafeedOverrides, + payload.estimateModelMemory + ); }, }; }, From 169147ba8c90ece8b36522be447d26d289ddbfcb Mon Sep 17 00:00:00 2001 From: Shahzad Date: Fri, 3 Jul 2020 10:24:15 +0200 Subject: [PATCH 22/59] [Uptime] Prevent duplicate requests on load for index status (#70585) --- x-pack/plugins/uptime/public/state/effects/index_status.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/uptime/public/state/effects/index_status.ts b/x-pack/plugins/uptime/public/state/effects/index_status.ts index 793a671f5fed8..a4b85312849a2 100644 --- a/x-pack/plugins/uptime/public/state/effects/index_status.ts +++ b/x-pack/plugins/uptime/public/state/effects/index_status.ts @@ -4,13 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { takeLatest } from 'redux-saga/effects'; +import { takeLeading } from 'redux-saga/effects'; import { indexStatusAction } from '../actions'; import { fetchIndexStatus } from '../api'; import { fetchEffectFactory } from './fetch_effect'; export function* fetchIndexStatusEffect() { - yield takeLatest( + yield takeLeading( indexStatusAction.get, fetchEffectFactory(fetchIndexStatus, indexStatusAction.success, indexStatusAction.fail) ); From f1888cd978e0f7895180b0507786c0f15b5724e7 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Fri, 3 Jul 2020 10:24:40 +0200 Subject: [PATCH 23/59] [Rum Dashbaord] Rum selected service view (#70579) Co-authored-by: Nathan L Smith Co-authored-by: Elastic Machine --- .../cypress/integration/rum_dashboard.feature | 3 ++ .../apm/e2e/cypress/integration/snapshots.js | 15 ++++++---- .../step_definitions/rum/page_load_dist.ts | 4 ++- .../step_definitions/rum/rum_filters.ts | 9 ++++-- .../rum/service_name_filter.ts | 30 +++++++++++++++++++ x-pack/plugins/apm/e2e/ingest-data/replay.js | 10 +++++++ .../app/Main/route_config/index.tsx | 9 ++++++ .../components/app/RumDashboard/index.tsx | 23 +++++++++----- .../app/ServiceDetails/ServiceDetailTabs.tsx | 12 ++++++-- .../shared/Links/apm/RumOverviewLink.tsx | 28 ++++++++--------- .../ServiceNameFilter/index.tsx | 1 + .../context/UrlParamsContext/helpers.ts | 1 + 12 files changed, 111 insertions(+), 34 deletions(-) create mode 100644 x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/service_name_filter.ts diff --git a/x-pack/plugins/apm/e2e/cypress/integration/rum_dashboard.feature b/x-pack/plugins/apm/e2e/cypress/integration/rum_dashboard.feature index bc807d596a272..c98e3f81b2bc6 100644 --- a/x-pack/plugins/apm/e2e/cypress/integration/rum_dashboard.feature +++ b/x-pack/plugins/apm/e2e/cypress/integration/rum_dashboard.feature @@ -37,3 +37,6 @@ Feature: RUM Dashboard When the user selected the breakdown Then breakdown series should appear in chart + Scenario: Service name filter + When a user changes the selected service name + Then it displays relevant client metrics diff --git a/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js b/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js index acccd86f3e4d7..ac09e575a46ae 100644 --- a/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js +++ b/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js @@ -9,17 +9,17 @@ module.exports = { }, "RUM Dashboard": { "Client metrics": { - "1": "62 ", - "2": "0.07 sec", + "1": "55 ", + "2": "0.08 sec", "3": "0.01 sec" }, "Rum page filters (example #1)": { - "1": "15 ", - "2": "0.07 sec", + "1": "8 ", + "2": "0.08 sec", "3": "0.01 sec" }, "Rum page filters (example #2)": { - "1": "35 ", + "1": "28 ", "2": "0.07 sec", "3": "0.01 sec" }, @@ -31,6 +31,11 @@ module.exports = { }, "Page load distribution chart legends": { "1": "Overall" + }, + "Service name filter": { + "1": "7 ", + "2": "0.07 sec", + "3": "0.01 sec" } } } diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/page_load_dist.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/page_load_dist.ts index 809b22490abd6..89dc3437c3e69 100644 --- a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/page_load_dist.ts +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/page_load_dist.ts @@ -18,7 +18,9 @@ Given(`a user click page load breakdown filter`, () => { }); When(`the user selected the breakdown`, () => { - cy.get('[data-cy=filter-breakdown-item_Browser]').click(); + cy.get('[data-cy=filter-breakdown-item_Browser]', { + timeout: DEFAULT_TIMEOUT, + }).click(); // click outside popover to close it cy.get('[data-cy=pageLoadDist]').click(); }); diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/rum_filters.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/rum_filters.ts index 439003351aedb..2600e5d073328 100644 --- a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/rum_filters.ts +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/rum_filters.ts @@ -5,6 +5,7 @@ */ import { When, Then } from 'cypress-cucumber-preprocessor/steps'; +import { DEFAULT_TIMEOUT } from './rum_dashboard'; When(/^the user filters by "([^"]*)"$/, (filterName) => { // wait for all loading to finish @@ -13,9 +14,13 @@ When(/^the user filters by "([^"]*)"$/, (filterName) => { cy.get(`#local-filter-${filterName}`).click(); if (filterName === 'os') { - cy.get('button.euiSelectableListItem[title="Mac OS X"]').click(); + cy.get('button.euiSelectableListItem[title="Mac OS X"]', { + timeout: DEFAULT_TIMEOUT, + }).click(); } else { - cy.get('button.euiSelectableListItem[title="DE"]').click(); + cy.get('button.euiSelectableListItem[title="DE"]', { + timeout: DEFAULT_TIMEOUT, + }).click(); } cy.get('[data-cy=applyFilter]').click(); }); diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/service_name_filter.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/service_name_filter.ts new file mode 100644 index 0000000000000..9a3d7b52674b7 --- /dev/null +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/rum/service_name_filter.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { When, Then } from 'cypress-cucumber-preprocessor/steps'; +import { DEFAULT_TIMEOUT } from '../apm'; + +When('a user changes the selected service name', (filterName) => { + // wait for all loading to finish + cy.get('kbnLoadingIndicator').should('not.be.visible'); + cy.get(`[data-cy=serviceNameFilter]`, { timeout: DEFAULT_TIMEOUT }).select( + 'opbean-client-rum' + ); +}); + +Then(`it displays relevant client metrics`, () => { + const clientMetrics = '[data-cy=client-metrics] .euiStat__title'; + + // wait for all loading to finish + cy.get('kbnLoadingIndicator').should('not.be.visible'); + cy.get('.euiStat__title-isLoading').should('not.be.visible'); + + cy.get(clientMetrics).eq(2).invoke('text').snapshot(); + + cy.get(clientMetrics).eq(1).invoke('text').snapshot(); + + cy.get(clientMetrics).eq(0).invoke('text').snapshot(); +}); diff --git a/x-pack/plugins/apm/e2e/ingest-data/replay.js b/x-pack/plugins/apm/e2e/ingest-data/replay.js index 483cc99df7470..6bab95635f558 100644 --- a/x-pack/plugins/apm/e2e/ingest-data/replay.js +++ b/x-pack/plugins/apm/e2e/ingest-data/replay.js @@ -69,6 +69,14 @@ function incrementSpinnerCount({ success }) { spinner.text = `Remaining: ${remaining}. Succeeded: ${requestProgress.succeeded}. Failed: ${requestProgress.failed}.`; } let iterIndex = 0; + +function setRumAgent(item) { + item.body = item.body.replace( + '"name":"client"', + '"name":"opbean-client-rum"' + ); +} + async function insertItem(item) { try { const url = `${APM_SERVER_URL}${item.url}`; @@ -78,6 +86,8 @@ async function insertItem(item) { if (item.url === '/intake/v2/rum/events') { if (iterIndex === userAgents.length) { + // set some event agent to opbean + setRumAgent(item); iterIndex = 0; } headers['User-Agent'] = userAgents[iterIndex]; diff --git a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx index 295f343b411a9..1625fb4c1409e 100644 --- a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx @@ -259,4 +259,13 @@ export const routes: BreadcrumbRoute[] = [ }), name: RouteName.RUM_OVERVIEW, }, + { + exact: true, + path: '/services/:serviceName/rum-overview', + component: () => , + breadcrumb: i18n.translate('xpack.apm.home.rumOverview.title', { + defaultMessage: 'Real User Monitoring', + }), + name: RouteName.RUM_OVERVIEW, + }, ]; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx index c9e475ef15316..3ddaa66b8de5e 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx @@ -11,6 +11,7 @@ import { EuiSpacer, } from '@elastic/eui'; import React, { useMemo } from 'react'; +import { useRouteMatch } from 'react-router-dom'; import { useTrackPageview } from '../../../../../observability/public'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { PROJECTION } from '../../../../common/projections/typings'; @@ -37,6 +38,10 @@ export function RumOverview() { urlParams: { start, end }, } = useUrlParams(); + const isRumServiceRoute = useRouteMatch( + '/services/:serviceName/rum-overview' + ); + const { data } = useFetcher( (callApmApi) => { if (start && end) { @@ -61,13 +66,17 @@ export function RumOverview() { - service.serviceName) ?? [] - } - /> - - + {!isRumServiceRoute && ( + <> + service.serviceName) ?? [] + } + /> + + {' '} + + )} diff --git a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceDetailTabs.tsx b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceDetailTabs.tsx index 81bdbdad805d6..ce60ffa4ba4e3 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceDetailTabs.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceDetailTabs.tsx @@ -22,11 +22,17 @@ import { ServiceMap } from '../ServiceMap'; import { ServiceMetrics } from '../ServiceMetrics'; import { ServiceNodeOverview } from '../ServiceNodeOverview'; import { TransactionOverview } from '../TransactionOverview'; -import { RumOverviewLink } from '../../shared/Links/apm/RumOverviewLink'; import { RumOverview } from '../RumDashboard'; +import { RumOverviewLink } from '../../shared/Links/apm/RumOverviewLink'; interface Props { - tab: 'transactions' | 'errors' | 'metrics' | 'nodes' | 'service-map'; + tab: + | 'transactions' + | 'errors' + | 'metrics' + | 'nodes' + | 'service-map' + | 'rum-overview'; } export function ServiceDetailTabs({ tab }: Props) { @@ -115,7 +121,7 @@ export function ServiceDetailTabs({ tab }: Props) { if (isRumAgentName(agentName)) { tabs.push({ link: ( - + {i18n.translate('xpack.apm.home.rumTabLabel', { defaultMessage: 'Real User Monitoring', })} diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/RumOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/RumOverviewLink.tsx index abca9817bd69d..729ed9b10f827 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/RumOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/RumOverviewLink.tsx @@ -11,21 +11,17 @@ */ import React from 'react'; import { APMLink, APMLinkExtendProps } from './APMLink'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; -import { pickKeys } from '../../../../../common/utils/pick_keys'; -const RumOverviewLink = (props: APMLinkExtendProps) => { - const { urlParams } = useUrlParams(); +interface RumOverviewLinkProps extends APMLinkExtendProps { + serviceName?: string; +} +export function RumOverviewLink({ + serviceName, + ...rest +}: RumOverviewLinkProps) { + const path = serviceName + ? `/services/${serviceName}/rum-overview` + : '/rum-overview'; - const persistedFilters = pickKeys( - urlParams, - 'transactionResult', - 'host', - 'containerId', - 'podName' - ); - - return ; -}; - -export { RumOverviewLink }; + return ; +} diff --git a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/ServiceNameFilter/index.tsx b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/ServiceNameFilter/index.tsx index e12a4a4831e17..0bb62bd8efcff 100644 --- a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/ServiceNameFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/ServiceNameFilter/index.tsx @@ -60,6 +60,7 @@ const ServiceNameFilter = ({ serviceNames }: Props) => { Date: Fri, 3 Jul 2020 10:43:33 +0200 Subject: [PATCH 24/59] [Ingest Pipelines] Load from json (#70297) * WiP load from json modal ready, need to refactor more stuff * First iteration of load from JSON functionality - refactored the pipeline processsors editor components for portability - added CIT for load from json component * added comment * update deserialize with tests and make it more fault tolerant * use flyout footer * remove console.error and make the json editor a lot shorter * address PR feedback - Update form schema and form schema types - simplify the save handler - refactor processors_title to processors_header * remove unused translations Co-authored-by: Elastic Machine --- .../on_failure_processors_title.tsx | 2 +- .../pipeline_form.scss} | 0 .../pipeline_form/pipeline_form.tsx | 65 +++-- .../pipeline_form/pipeline_form_fields.tsx | 78 +++--- .../processors_header.tsx} | 13 +- .../components/pipeline_form/schema.ts | 44 ++++ .../components/pipeline_form/schema.tsx | 138 ---------- .../components/pipeline_form/types.ts | 2 + .../pipeline_processors_editor/README.md | 24 ++ .../pipeline_processors_editor.helpers.tsx | 24 +- .../pipeline_processors_editor.test.tsx | 14 +- .../components/index.ts | 8 +- .../components/load_from_json/button.tsx | 34 +++ .../components/load_from_json/index.ts | 8 + .../load_from_json/modal_provider.test.tsx | 127 ++++++++++ .../load_from_json/modal_provider.tsx | 138 ++++++++++ .../components/pipeline_processors_editor.tsx | 33 +++ .../context_menu.tsx | 10 +- .../{messages.ts => i18n_texts.ts} | 2 +- .../pipeline_processors_editor_item.tsx | 22 +- .../processor_settings_form.tsx | 44 ++-- .../pipeline_processors_editor/constants.ts | 5 + .../pipeline_processors_editor/context.tsx | 221 +++++++++++++++- .../deserialize.test.ts | 74 ++++++ .../pipeline_processors_editor/deserialize.ts | 8 +- .../global_on_failure_processors_editor.tsx | 13 + .../editors/index.ts | 8 + .../editors/processors_editor.tsx | 13 + .../pipeline_processors_editor/index.ts | 8 +- .../pipeline_processors_editor.container.tsx | 74 ------ .../pipeline_processors_editor.tsx | 239 ------------------ .../processors_reducer/index.ts | 2 +- .../processors_reducer/processors_reducer.ts | 14 + .../pipeline_processors_editor/types.ts | 2 + .../ingest_pipelines/public/shared_imports.ts | 2 + .../translations/translations/ja-JP.json | 6 - .../translations/translations/zh-CN.json | 6 - 37 files changed, 931 insertions(+), 594 deletions(-) rename x-pack/plugins/ingest_pipelines/public/application/components/{pipeline_processors_editor/components => pipeline_form}/on_failure_processors_title.tsx (95%) rename x-pack/plugins/ingest_pipelines/public/application/components/{pipeline_processors_editor/pipeline_processors_editor.scss => pipeline_form/pipeline_form.scss} (100%) rename x-pack/plugins/ingest_pipelines/public/application/components/{pipeline_processors_editor/components/processors_title_and_test_button.tsx => pipeline_form/processors_header.tsx} (84%) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.ts delete mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/button.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/index.ts create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor.tsx rename x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/{messages.ts => i18n_texts.ts} (98%) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.test.ts create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/global_on_failure_processors_editor.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/index.ts create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/processors_editor.tsx delete mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.container.tsx delete mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/on_failure_processors_title.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/on_failure_processors_title.tsx similarity index 95% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/on_failure_processors_title.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/on_failure_processors_title.tsx index 251a2ffe95212..d223653442819 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/on_failure_processors_title.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/on_failure_processors_title.tsx @@ -8,7 +8,7 @@ import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { usePipelineProcessorsContext } from '../context'; +import { usePipelineProcessorsContext } from '../pipeline_processors_editor/context'; export const OnFailureProcessorsTitle: FunctionComponent = () => { const { links } = usePipelineProcessorsContext(); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.scss b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.scss similarity index 100% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.scss rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.scss diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx index a68e667f4ab43..341e15132d353 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx @@ -9,19 +9,18 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButton, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { useForm, Form, FormConfig } from '../../../shared_imports'; -import { Pipeline } from '../../../../common/types'; +import { Pipeline, Processor } from '../../../../common/types'; -import { - OnUpdateHandlerArg, - OnUpdateHandler, - SerializeResult, -} from '../pipeline_processors_editor'; +import './pipeline_form.scss'; + +import { OnUpdateHandlerArg, OnUpdateHandler } from '../pipeline_processors_editor'; import { PipelineRequestFlyout } from './pipeline_request_flyout'; import { PipelineTestFlyout } from './pipeline_test_flyout'; import { PipelineFormFields } from './pipeline_form_fields'; import { PipelineFormError } from './pipeline_form_error'; import { pipelineFormSchema } from './schema'; +import { PipelineForm as IPipelineForm } from './types'; export interface PipelineFormProps { onSave: (pipeline: Pipeline) => void; @@ -32,14 +31,15 @@ export interface PipelineFormProps { isEditing?: boolean; } +const defaultFormValue: Pipeline = Object.freeze({ + name: '', + description: '', + processors: [], + on_failure: [], +}); + export const PipelineForm: React.FunctionComponent = ({ - defaultValue = { - name: '', - description: '', - processors: [], - on_failure: [], - version: '', - }, + defaultValue = defaultFormValue, onSave, isSaving, saveError, @@ -50,34 +50,42 @@ export const PipelineForm: React.FunctionComponent = ({ const [isTestingPipeline, setIsTestingPipeline] = useState(false); - const processorStateRef = useRef(); + const { + processors: initialProcessors, + on_failure: initialOnFailureProcessors, + ...defaultFormValues + } = defaultValue; + + const [processorsState, setProcessorsState] = useState<{ + processors: Processor[]; + onFailure?: Processor[]; + }>({ + processors: initialProcessors, + onFailure: initialOnFailureProcessors, + }); - const handleSave: FormConfig['onSubmit'] = async (formData, isValid) => { - let override: SerializeResult | undefined; + const processorStateRef = useRef(); + const handleSave: FormConfig['onSubmit'] = async (formData, isValid) => { if (!isValid) { return; } if (processorStateRef.current) { - const processorsState = processorStateRef.current; - if (await processorsState.validate()) { - override = processorsState.getData(); - } else { - return; + const state = processorStateRef.current; + if (await state.validate()) { + onSave({ ...formData, ...state.getData() }); } } - - onSave({ ...formData, ...(override || {}) } as Pipeline); }; const handleTestPipelineClick = () => { setIsTestingPipeline(true); }; - const { form } = useForm({ + const { form } = useForm({ schema: pipelineFormSchema, - defaultValue, + defaultValue: defaultFormValues, onSubmit: handleSave, }); @@ -121,9 +129,12 @@ export const PipelineForm: React.FunctionComponent = ({ {/* All form fields */} { + setProcessorsState({ processors, onFailure }); + }} onEditorFlyoutOpen={onEditorFlyoutOpen} - initialProcessors={defaultValue.processors} - initialOnFailureProcessors={defaultValue.on_failure} + processors={processorsState.processors} + onFailure={processorsState.onFailure} onProcessorsUpdate={onProcessorsChangeHandler} hasVersion={Boolean(defaultValue.version)} isTestButtonDisabled={isTestingPipeline || form.isValid === false} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx index 52d1a77c1df6d..0e7a45e8d07b9 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx @@ -6,17 +6,27 @@ import React, { useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiSpacer, EuiSwitch } from '@elastic/eui'; +import { EuiSpacer, EuiSwitch, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { Processor } from '../../../../common/types'; -import { FormDataProvider } from '../../../shared_imports'; -import { PipelineProcessorsEditor, OnUpdateHandler } from '../pipeline_processors_editor'; import { getUseField, getFormRow, Field, useKibana } from '../../../shared_imports'; +import { + PipelineProcessorsContextProvider, + GlobalOnFailureProcessorsEditor, + ProcessorsEditor, + OnUpdateHandler, + OnDoneLoadJsonHandler, +} from '../pipeline_processors_editor'; + +import { ProcessorsHeader } from './processors_header'; +import { OnFailureProcessorsTitle } from './on_failure_processors_title'; + interface Props { - initialProcessors: Processor[]; - initialOnFailureProcessors?: Processor[]; + processors: Processor[]; + onFailure?: Processor[]; + onLoadJson: OnDoneLoadJsonHandler; onProcessorsUpdate: OnUpdateHandler; hasVersion: boolean; isTestButtonDisabled: boolean; @@ -29,8 +39,9 @@ const UseField = getUseField({ component: Field }); const FormRow = getFormRow({ titleTag: 'h3' }); export const PipelineFormFields: React.FunctionComponent = ({ - initialProcessors, - initialOnFailureProcessors, + processors, + onFailure, + onLoadJson, onProcessorsUpdate, isEditing, hasVersion, @@ -113,30 +124,37 @@ export const PipelineFormFields: React.FunctionComponent = ({ {/* Pipeline Processors Editor */} - - {({ processors, on_failure: onFailure }) => { - const processorProp = - typeof processors === 'string' && processors - ? JSON.parse(processors) - : initialProcessors ?? []; - - const onFailureProp = - typeof onFailure === 'string' && onFailure - ? JSON.parse(onFailure) - : initialOnFailureProcessors ?? []; - return ( - - ); - }} - + +
+ + + + + + + + + + + + + + + + + +
+
); }; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_title_and_test_button.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/processors_header.tsx similarity index 84% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_title_and_test_button.tsx rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/processors_header.tsx index 6d1e2610b5c2b..5e5cddbd36b92 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processors_title_and_test_button.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/processors_header.tsx @@ -9,22 +9,26 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiLink, EuiText, EuiTitle } from import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { usePipelineProcessorsContext } from '../context'; +import { usePipelineProcessorsContext } from '../pipeline_processors_editor/context'; + +import { LoadFromJsonButton, OnDoneLoadJsonHandler } from '../pipeline_processors_editor'; export interface Props { onTestPipelineClick: () => void; isTestButtonDisabled: boolean; + onLoadJson: OnDoneLoadJsonHandler; } -export const ProcessorsTitleAndTestButton: FunctionComponent = ({ +export const ProcessorsHeader: FunctionComponent = ({ onTestPipelineClick, isTestButtonDisabled, + onLoadJson, }) => { const { links } = usePipelineProcessorsContext(); return ( @@ -55,6 +59,9 @@ export const ProcessorsTitleAndTestButton: FunctionComponent = ({ />
+ + + = { + name: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.ingestPipelines.form.nameFieldLabel', { + defaultMessage: 'Name', + }), + validations: [ + { + validator: emptyField( + i18n.translate('xpack.ingestPipelines.form.pipelineNameRequiredError', { + defaultMessage: 'Name is required.', + }) + ), + }, + ], + }, + description: { + type: FIELD_TYPES.TEXTAREA, + label: i18n.translate('xpack.ingestPipelines.form.descriptionFieldLabel', { + defaultMessage: 'Description (optional)', + }), + }, + version: { + type: FIELD_TYPES.NUMBER, + label: i18n.translate('xpack.ingestPipelines.form.versionFieldLabel', { + defaultMessage: 'Version (optional)', + }), + formatters: [toInt], + }, +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx deleted file mode 100644 index 5435f43a78acf..0000000000000 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/schema.tsx +++ /dev/null @@ -1,138 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React from 'react'; - -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiCode } from '@elastic/eui'; - -import { FormSchema, FIELD_TYPES, fieldValidators, fieldFormatters } from '../../../shared_imports'; -import { parseJson, stringifyJson } from '../../lib'; - -const { emptyField, isJsonField } = fieldValidators; -const { toInt } = fieldFormatters; - -export const pipelineFormSchema: FormSchema = { - name: { - type: FIELD_TYPES.TEXT, - label: i18n.translate('xpack.ingestPipelines.form.nameFieldLabel', { - defaultMessage: 'Name', - }), - validations: [ - { - validator: emptyField( - i18n.translate('xpack.ingestPipelines.form.pipelineNameRequiredError', { - defaultMessage: 'Name is required.', - }) - ), - }, - ], - }, - description: { - type: FIELD_TYPES.TEXTAREA, - label: i18n.translate('xpack.ingestPipelines.form.descriptionFieldLabel', { - defaultMessage: 'Description (optional)', - }), - }, - processors: { - label: i18n.translate('xpack.ingestPipelines.form.processorsFieldLabel', { - defaultMessage: 'Processors', - }), - helpText: ( - - {JSON.stringify([ - { - set: { - field: 'foo', - value: 'bar', - }, - }, - ])} - - ), - }} - /> - ), - serializer: parseJson, - deserializer: stringifyJson, - validations: [ - { - validator: emptyField( - i18n.translate('xpack.ingestPipelines.form.processorsRequiredError', { - defaultMessage: 'Processors are required.', - }) - ), - }, - { - validator: isJsonField( - i18n.translate('xpack.ingestPipelines.form.processorsJsonError', { - defaultMessage: 'The input is not valid.', - }) - ), - }, - ], - }, - on_failure: { - label: i18n.translate('xpack.ingestPipelines.form.onFailureFieldLabel', { - defaultMessage: 'Failure processors (optional)', - }), - helpText: ( - - {JSON.stringify([ - { - set: { - field: '_index', - value: 'failed-{{ _index }}', - }, - }, - ])} - - ), - }} - /> - ), - serializer: (value) => { - const result = parseJson(value); - // If an empty array was passed, strip out this value entirely. - if (!result.length) { - return undefined; - } - return result; - }, - deserializer: stringifyJson, - validations: [ - { - validator: (validationArg) => { - if (!validationArg.value) { - return; - } - return isJsonField( - i18n.translate('xpack.ingestPipelines.form.onFailureProcessorsJsonError', { - defaultMessage: 'The input is not valid.', - }) - )(validationArg); - }, - }, - ], - }, - version: { - type: FIELD_TYPES.NUMBER, - label: i18n.translate('xpack.ingestPipelines.form.versionFieldLabel', { - defaultMessage: 'Version (optional)', - }), - formatters: [toInt], - }, -}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts index bd74f09546ff4..aa52c14e61eae 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/types.ts @@ -7,3 +7,5 @@ import { Pipeline } from '../../../../common/types'; export type ReadProcessorsFunction = () => Pick; + +export type PipelineForm = Omit; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md new file mode 100644 index 0000000000000..d29af67d3179c --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/README.md @@ -0,0 +1,24 @@ +# Pipeline Processors Editor + +This component provides a way to visually build and manage an ingest +pipeline. + +# API + +## Editor components + +The top-level API consists of 3 pieces that enable the maximum amount +of flexibility for consuming code to determine overall layout. + +- PipelineProcessorsEditorContext +- ProcessorsEditor +- GlobalOnFailureProcessorsEditor + +The editor components must be wrapped inside of the context component +as this is where the shared processors state is contained. + +## Load JSON button + +This component is totally standalone. It gives users a button that +presents a modal for loading a pipeline. It does some basic +validation on the JSON to ensure that it is correct. diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.helpers.tsx index 7ad9aed3c44a4..cc3817d92d5e3 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.helpers.tsx @@ -6,7 +6,12 @@ import { act } from 'react-dom/test-utils'; import React from 'react'; import { registerTestBed, TestBed } from '../../../../../../../test_utils'; -import { PipelineProcessorsEditor, Props } from '../pipeline_processors_editor.container'; +import { + PipelineProcessorsContextProvider, + Props, + ProcessorsEditor, + GlobalOnFailureProcessorsEditor, +} from '../'; jest.mock('@elastic/eui', () => { const original = jest.requireActual('@elastic/eui'); @@ -55,9 +60,16 @@ jest.mock('react-virtualized', () => { }; }); -const testBedSetup = registerTestBed(PipelineProcessorsEditor, { - doMountAsync: false, -}); +const testBedSetup = registerTestBed( + (props: Props) => ( + + + + ), + { + doMountAsync: false, + } +); export interface SetupResult extends TestBed { actions: ReturnType; @@ -146,10 +158,6 @@ const createActions = (testBed: TestBed) => { find(`${processorSelector}.moreMenu.duplicateButton`).simulate('click'); }); }, - - toggleOnFailure() { - find('pipelineEditorOnFailureToggle').simulate('click'); - }, }; }; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.test.tsx index 15121cc71c321..a4bbf840dff71 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.test.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/__jest__/pipeline_processors_editor.test.tsx @@ -43,9 +43,9 @@ describe('Pipeline Editor', () => { }, onFlyoutOpen: jest.fn(), onUpdate, - isTestButtonDisabled: false, - onTestPipelineClick: jest.fn(), - esDocsBasePath: 'test', + links: { + esDocsBasePath: 'test', + }, }); }); @@ -57,13 +57,6 @@ describe('Pipeline Editor', () => { expect(arg.getData()).toEqual(testProcessors); }); - it('toggles the on-failure processors tree', () => { - const { actions, exists } = testBed; - expect(exists('pipelineEditorOnFailureTree')).toBe(false); - actions.toggleOnFailure(); - expect(exists('pipelineEditorOnFailureTree')).toBe(true); - }); - describe('processors', () => { it('adds a new processor', async () => { const { actions } = testBed; @@ -169,7 +162,6 @@ describe('Pipeline Editor', () => { it('moves to and from the global on-failure tree', async () => { const { actions } = testBed; - actions.toggleOnFailure(); await actions.addProcessor('onFailure', 'test', { if: '1 == 5' }); actions.moveProcessor('processors>0', 'dropButtonBelow-onFailure>0'); const [onUpdateResult1] = onUpdate.mock.calls[onUpdate.mock.calls.length - 1]; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/index.ts index 2d512a6bfa2ed..de0621b187230 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/index.ts @@ -12,10 +12,10 @@ export { export { ProcessorsTree, ProcessorInfo, OnActionHandler } from './processors_tree'; -export { PipelineProcessorsEditorItem } from './pipeline_processors_editor_item/pipeline_processors_editor_item'; +export { PipelineProcessorsEditor } from './pipeline_processors_editor'; -export { ProcessorRemoveModal } from './processor_remove_modal'; +export { PipelineProcessorsEditorItem } from './pipeline_processors_editor_item'; -export { ProcessorsTitleAndTestButton } from './processors_title_and_test_button'; +export { ProcessorRemoveModal } from './processor_remove_modal'; -export { OnFailureProcessorsTitle } from './on_failure_processors_title'; +export { OnDoneLoadJsonHandler, LoadFromJsonButton } from './load_from_json'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/button.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/button.tsx new file mode 100644 index 0000000000000..482878d1bda58 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/button.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; +import React, { FunctionComponent } from 'react'; +import { EuiButton } from '@elastic/eui'; + +import { ModalProvider, OnDoneLoadJsonHandler } from './modal_provider'; + +interface Props { + onDone: OnDoneLoadJsonHandler; +} + +const i18nTexts = { + buttonLabel: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.buttonLabel', { + defaultMessage: 'Load JSON', + }), +}; + +export const LoadFromJsonButton: FunctionComponent = ({ onDone }) => { + return ( + + {(openModal) => { + return ( + + {i18nTexts.buttonLabel} + + ); + }} + + ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/index.ts new file mode 100644 index 0000000000000..c1c49f251d518 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/index.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export { LoadFromJsonButton } from './button'; +export { OnDoneLoadJsonHandler } from './modal_provider'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.test.tsx new file mode 100644 index 0000000000000..2f4cdce1edd0b --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.test.tsx @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { ModalProvider, OnDoneLoadJsonHandler } from './modal_provider'; + +jest.mock('@elastic/eui', () => { + const original = jest.requireActual('@elastic/eui'); + + return { + ...original, + // Mocking EuiCodeEditor, which uses React Ace under the hood + EuiCodeEditor: (props: any) => ( + { + props.onChange(syntheticEvent.jsonString); + }} + /> + ), + }; +}); + +jest.mock('lodash', () => { + const original = jest.requireActual('lodash'); + + return { + ...original, + debounce: (fn: any) => fn, + }; +}); + +import { registerTestBed, TestBed } from '../../../../../../../../test_utils/testbed'; + +const setup = ({ onDone }: { onDone: OnDoneLoadJsonHandler }) => { + return registerTestBed( + () => ( + + {(openModal) => { + return ( + + ); + }} + + ), + { + memoryRouter: { + wrapComponent: false, + }, + } + )(); +}; + +describe('Load from JSON ModalProvider', () => { + let testBed: TestBed; + let onDone: jest.Mock; + + beforeEach(async () => { + onDone = jest.fn(); + testBed = await setup({ onDone }); + }); + + it('displays errors', () => { + const { find, exists } = testBed; + find('button').simulate('click'); + expect(exists('loadJsonConfirmationModal')); + const invalidPipeline = '{}'; + find('mockCodeEditor').simulate('change', { jsonString: invalidPipeline }); + find('confirmModalConfirmButton').simulate('click'); + const errorCallout = find('loadJsonConfirmationModal.errorCallOut'); + expect(errorCallout.text()).toContain('Please ensure the JSON is a valid pipeline object.'); + expect(onDone).toHaveBeenCalledTimes(0); + }); + + it('passes through a valid pipeline object', () => { + const { find, exists } = testBed; + find('button').simulate('click'); + expect(exists('loadJsonConfirmationModal')); + const validPipeline = JSON.stringify({ + processors: [{ set: { field: 'test', value: 123 } }, { badType1: null }, { badType2: 1 }], + on_failure: [ + { + gsub: { + field: '_index', + pattern: '(.monitoring-\\w+-)6(-.+)', + replacement: '$17$2', + }, + }, + ], + }); + find('mockCodeEditor').simulate('change', { jsonString: validPipeline }); + find('confirmModalConfirmButton').simulate('click'); + expect(!exists('loadJsonConfirmationModal')); + expect(onDone).toHaveBeenCalledTimes(1); + expect(onDone.mock.calls[0][0]).toMatchInlineSnapshot(` + Object { + "on_failure": Array [ + Object { + "gsub": Object { + "field": "_index", + "pattern": "(.monitoring-\\\\w+-)6(-.+)", + "replacement": "$17$2", + }, + }, + ], + "processors": Array [ + Object { + "set": Object { + "field": "test", + "value": 123, + }, + }, + Object { + "badType1": null, + }, + Object { + "badType2": 1, + }, + ], + } + `); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.tsx new file mode 100644 index 0000000000000..f183386d5927d --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/load_from_json/modal_provider.tsx @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { FunctionComponent, useRef, useState } from 'react'; +import { EuiConfirmModal, EuiOverlayMask, EuiSpacer, EuiText, EuiCallOut } from '@elastic/eui'; + +import { JsonEditor, OnJsonEditorUpdateHandler } from '../../../../../shared_imports'; + +import { Processor } from '../../../../../../common/types'; + +import { deserialize } from '../../deserialize'; + +export type OnDoneLoadJsonHandler = (json: { + processors: Processor[]; + on_failure?: Processor[]; +}) => void; + +export interface Props { + onDone: OnDoneLoadJsonHandler; + children: (openModal: () => void) => React.ReactNode; +} + +const i18nTexts = { + modalTitle: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.modalTitle', { + defaultMessage: 'Load JSON', + }), + buttons: { + cancel: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.buttons.cancel', { + defaultMessage: 'Cancel', + }), + confirm: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.buttons.confirm', { + defaultMessage: 'Load and overwrite', + }), + }, + editor: { + label: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.editor', { + defaultMessage: 'Pipeline object', + }), + }, + error: { + title: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.error.title', { + defaultMessage: 'Invalid pipeline', + }), + body: i18n.translate('xpack.ingestPipelines.pipelineEditor.loadFromJson.error.body', { + defaultMessage: 'Please ensure the JSON is a valid pipeline object.', + }), + }, +}; + +const defaultValue = {}; +const defaultValueRaw = JSON.stringify(defaultValue, null, 2); + +export const ModalProvider: FunctionComponent = ({ onDone, children }) => { + const [isModalVisible, setIsModalVisible] = useState(false); + const [isValidJson, setIsValidJson] = useState(true); + const [error, setError] = useState(); + const jsonContent = useRef['0']>({ + isValid: true, + validate: () => true, + data: { + format: () => defaultValue, + raw: defaultValueRaw, + }, + }); + const onJsonUpdate: OnJsonEditorUpdateHandler = (jsonUpdateData) => { + setIsValidJson(jsonUpdateData.validate()); + jsonContent.current = jsonUpdateData; + }; + return ( + <> + {children(() => setIsModalVisible(true))} + {isModalVisible ? ( + + { + setIsModalVisible(false); + }} + onConfirm={async () => { + try { + const json = jsonContent.current.data.format(); + const { processors, on_failure: onFailure } = json; + // This function will throw if it cannot parse the pipeline object + deserialize({ processors, onFailure }); + onDone(json as any); + setIsModalVisible(false); + } catch (e) { + setError(e); + } + }} + cancelButtonText={i18nTexts.buttons.cancel} + confirmButtonDisabled={!isValidJson} + confirmButtonText={i18nTexts.buttons.confirm} + maxWidth={600} + > +
+ + + + + + + {error && ( + <> + + {i18nTexts.error.body} + + + + )} + + +
+
+
+ ) : undefined} + + ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor.tsx new file mode 100644 index 0000000000000..c89ff1d3d99ac --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent, memo, useMemo } from 'react'; +import { ProcessorsTree } from '.'; +import { usePipelineProcessorsContext } from '../context'; + +import { ON_FAILURE_STATE_SCOPE, PROCESSOR_STATE_SCOPE } from '../processors_reducer'; + +export interface Props { + stateSlice: typeof ON_FAILURE_STATE_SCOPE | typeof PROCESSOR_STATE_SCOPE; +} + +export const PipelineProcessorsEditor: FunctionComponent = memo( + function PipelineProcessorsEditor({ stateSlice }) { + const { + onTreeAction, + state: { editor, processors }, + } = usePipelineProcessorsContext(); + const baseSelector = useMemo(() => [stateSlice], [stateSlice]); + return ( + + ); + } +); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/context_menu.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/context_menu.tsx index 5bbea4b89b053..5cee5311c62a9 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/context_menu.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/context_menu.tsx @@ -9,7 +9,7 @@ import React, { FunctionComponent, useState } from 'react'; import { EuiContextMenuItem, EuiContextMenuPanel, EuiPopover, EuiButtonIcon } from '@elastic/eui'; -import { editorItemMessages } from './messages'; +import { i18nTexts } from './i18n_texts'; interface Props { disabled: boolean; @@ -39,7 +39,7 @@ export const ContextMenu: FunctionComponent = (props) => { onDuplicate(); }} > - {editorItemMessages.duplicateButtonLabel} + {i18nTexts.duplicateButtonLabel} , showAddOnFailure ? ( = (props) => { onAddOnFailure(); }} > - {editorItemMessages.addOnFailureButtonLabel} + {i18nTexts.addOnFailureButtonLabel} ) : undefined, = (props) => { onDelete(); }} > - {editorItemMessages.deleteButtonLabel} + {i18nTexts.deleteButtonLabel} , ].filter(Boolean) as JSX.Element[]; @@ -82,7 +82,7 @@ export const ContextMenu: FunctionComponent = (props) => { disabled={disabled} onClick={() => setIsOpen((v) => !v)} iconType="boxesHorizontal" - aria-label={editorItemMessages.moreButtonAriaLabel} + aria-label={i18nTexts.moreButtonAriaLabel} /> } > diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/messages.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/i18n_texts.ts similarity index 98% rename from x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/messages.ts rename to x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/i18n_texts.ts index 913902d295503..ab080767b6029 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/messages.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/i18n_texts.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; -export const editorItemMessages = { +export const i18nTexts = { moveButtonLabel: i18n.translate('xpack.ingestPipelines.pipelineEditor.item.moveButtonLabel', { defaultMessage: 'Move this processor', }), diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx index 0fe804adaeb48..09c047d1d51b7 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/pipeline_processors_editor_item/pipeline_processors_editor_item.tsx @@ -25,7 +25,7 @@ import './pipeline_processors_editor_item.scss'; import { InlineTextInput } from './inline_text_input'; import { ContextMenu } from './context_menu'; -import { editorItemMessages } from './messages'; +import { i18nTexts } from './i18n_texts'; import { ProcessorInfo } from '../processors_tree'; export interface Handlers { @@ -52,7 +52,7 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( renderOnFailureHandlers, }) => { const { - state: { editor, processorsDispatch }, + state: { editor, processors }, } = usePipelineProcessorsContext(); const isDisabled = editor.mode.id !== 'idle'; @@ -115,7 +115,7 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( description: nextDescription, }; } - processorsDispatch({ + processors.dispatch({ type: 'updateProcessor', payload: { processor: { @@ -126,17 +126,17 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( }, }); }} - ariaLabel={editorItemMessages.processorTypeLabel({ type: processor.type })} + ariaLabel={i18nTexts.processorTypeLabel({ type: processor.type })} text={description} - placeholder={editorItemMessages.descriptionPlaceholder} + placeholder={i18nTexts.descriptionPlaceholder} />
{!isInMoveMode && ( - + { @@ -151,12 +151,12 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( {!isInMoveMode && ( - + @@ -165,7 +165,7 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( - {editorItemMessages.cancelMoveButtonLabel} + {i18nTexts.cancelMoveButtonLabel}
@@ -183,7 +183,7 @@ export const PipelineProcessorsEditorItem: FunctionComponent = memo( editor.setMode({ id: 'removingProcessor', arg: { selector } }); }} onDuplicate={() => { - processorsDispatch({ + processors.dispatch({ type: 'duplicateProcessor', payload: { source: selector, diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_settings_form/processor_settings_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_settings_form/processor_settings_form.tsx index 9d284748a3d15..3eccda55fbb3a 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_settings_form/processor_settings_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_settings_form/processor_settings_form.tsx @@ -9,11 +9,13 @@ import { FormattedMessage } from '@kbn/i18n/react'; import React, { FunctionComponent, memo, useEffect } from 'react'; import { EuiButton, + EuiButtonEmpty, EuiHorizontalRule, EuiFlyout, EuiFlyoutHeader, - EuiTitle, EuiFlyoutBody, + EuiFlyoutFooter, + EuiTitle, EuiFlexGroup, EuiFlexItem, } from '@elastic/eui'; @@ -44,6 +46,11 @@ const addButtonLabel = i18n.translate( { defaultMessage: 'Add' } ); +const cancelButtonLabel = i18n.translate( + 'xpack.ingestPipelines.settingsFormOnFailureFlyout.cancelButtonLabel', + { defaultMessage: 'Cancel' } +); + export const ProcessorSettingsForm: FunctionComponent = memo( ({ processor, form, isOnFailure, onClose, onOpen }) => { const { @@ -71,7 +78,7 @@ export const ProcessorSettingsForm: FunctionComponent = memo( return (
- + @@ -109,30 +116,19 @@ export const ProcessorSettingsForm: FunctionComponent = memo( {(arg: any) => { const { type } = arg; - let formContent: React.ReactNode | undefined; if (type?.length) { const formDescriptor = getProcessorFormDescriptor(type as any); if (formDescriptor?.FieldsComponent) { - formContent = ( + return ( <> ); - } else { - formContent = ; } - - return ( - <> - {formContent} - - {processor ? updateButtonLabel : addButtonLabel} - - - ); + return ; } // If the user has not yet defined a type, we do not show any settings fields @@ -140,6 +136,24 @@ export const ProcessorSettingsForm: FunctionComponent = memo( }} + + + + {cancelButtonLabel} + + + { + form.submit(); + }} + > + {processor ? updateButtonLabel : addButtonLabel} + + + + ); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/constants.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/constants.ts index 46e3d1c803fd5..87e6eb7f642a6 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/constants.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/constants.ts @@ -4,7 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ +import { ON_FAILURE_STATE_SCOPE, PROCESSOR_STATE_SCOPE } from './processors_reducer'; + export enum DropSpecialLocations { top = 'TOP', bottom = 'BOTTOM', } + +export const PROCESSORS_BASE_SELECTOR = [PROCESSOR_STATE_SCOPE]; +export const ON_FAILURE_BASE_SELECTOR = [ON_FAILURE_STATE_SCOPE]; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context.tsx index fbc06f41208fe..ec864d31d1986 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/context.tsx @@ -4,41 +4,242 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { createContext, Dispatch, FunctionComponent, useContext, useState } from 'react'; -import { EditorMode } from './types'; -import { ProcessorsDispatch } from './processors_reducer'; +import React, { + createContext, + Dispatch, + FunctionComponent, + useCallback, + useContext, + useEffect, + useMemo, + useState, + useRef, +} from 'react'; + +import { Processor } from '../../../../common/types'; + +import { EditorMode, FormValidityState, OnFormUpdateArg, OnUpdateHandlerArg } from './types'; + +import { + ProcessorsDispatch, + useProcessorsState, + State as ProcessorsState, + isOnFailureSelector, +} from './processors_reducer'; + +import { deserialize } from './deserialize'; + +import { serialize } from './serialize'; + +import { OnSubmitHandler, ProcessorSettingsForm } from './components/processor_settings_form'; + +import { OnActionHandler } from './components/processors_tree'; + +import { ProcessorRemoveModal } from './components'; + +import { getValue } from './utils'; interface Links { esDocsBasePath: string; } -const PipelineProcessorsContext = createContext<{ +interface ContextValue { links: Links; + onTreeAction: OnActionHandler; state: { - processorsDispatch: ProcessorsDispatch; + processors: { + state: ProcessorsState; + dispatch: ProcessorsDispatch; + }; editor: { mode: EditorMode; setMode: Dispatch; }; }; -}>({} as any); +} -interface Props { +const PipelineProcessorsContext = createContext({} as any); + +export interface Props { links: Links; - processorsDispatch: ProcessorsDispatch; + value: { + processors: Processor[]; + onFailure?: Processor[]; + }; + /** + * Give users a way to react to this component opening a flyout + */ + onFlyoutOpen: () => void; + onUpdate: (arg: OnUpdateHandlerArg) => void; } export const PipelineProcessorsContextProvider: FunctionComponent = ({ links, + value: { processors: originalProcessors, onFailure: originalOnFailureProcessors }, + onUpdate, + onFlyoutOpen, children, - processorsDispatch, }) => { + const initRef = useRef(false); const [mode, setMode] = useState({ id: 'idle' }); + const deserializedResult = useMemo( + () => + deserialize({ + processors: originalProcessors, + onFailure: originalOnFailureProcessors, + }), + [originalProcessors, originalOnFailureProcessors] + ); + const [processorsState, processorsDispatch] = useProcessorsState(deserializedResult); + + useEffect(() => { + if (initRef.current) { + processorsDispatch({ + type: 'loadProcessors', + payload: { + newState: deserializedResult, + }, + }); + } else { + initRef.current = true; + } + }, [deserializedResult, processorsDispatch]); + + const { onFailure: onFailureProcessors, processors } = processorsState; + + const [formState, setFormState] = useState({ + validate: () => Promise.resolve(true), + }); + + const onFormUpdate = useCallback<(arg: OnFormUpdateArg) => void>( + ({ isValid, validate }) => { + setFormState({ + validate: async () => { + if (isValid === undefined) { + return validate(); + } + return isValid; + }, + }); + }, + [setFormState] + ); + + useEffect(() => { + onUpdate({ + validate: async () => { + const formValid = await formState.validate(); + return formValid && mode.id === 'idle'; + }, + getData: () => + serialize({ + onFailure: onFailureProcessors, + processors, + }), + }); + }, [processors, onFailureProcessors, onUpdate, formState, mode]); + + const onSubmit = useCallback( + (processorTypeAndOptions) => { + switch (mode.id) { + case 'creatingProcessor': + processorsDispatch({ + type: 'addProcessor', + payload: { + processor: { ...processorTypeAndOptions }, + targetSelector: mode.arg.selector, + }, + }); + break; + case 'editingProcessor': + processorsDispatch({ + type: 'updateProcessor', + payload: { + processor: { + ...mode.arg.processor, + ...processorTypeAndOptions, + }, + selector: mode.arg.selector, + }, + }); + break; + default: + } + setMode({ id: 'idle' }); + }, + [processorsDispatch, mode, setMode] + ); + + const onCloseSettingsForm = useCallback(() => { + setMode({ id: 'idle' }); + setFormState({ validate: () => Promise.resolve(true) }); + }, [setFormState, setMode]); + + const onTreeAction = useCallback( + (action) => { + switch (action.type) { + case 'addProcessor': + setMode({ id: 'creatingProcessor', arg: { selector: action.payload.target } }); + break; + case 'move': + setMode({ id: 'idle' }); + processorsDispatch({ + type: 'moveProcessor', + payload: action.payload, + }); + break; + case 'selectToMove': + setMode({ id: 'movingProcessor', arg: action.payload.info }); + break; + case 'cancelMove': + setMode({ id: 'idle' }); + break; + } + }, + [processorsDispatch, setMode] + ); + return ( {children} + + {mode.id === 'editingProcessor' || mode.id === 'creatingProcessor' ? ( + + ) : undefined} + {mode.id === 'removingProcessor' && ( + { + if (confirmed) { + processorsDispatch({ + type: 'removeProcessor', + payload: { selector }, + }); + } + setMode({ id: 'idle' }); + }} + /> + )} ); }; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.test.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.test.ts new file mode 100644 index 0000000000000..9b7c2069fcddd --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.test.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { deserialize } from './deserialize'; + +describe('deserialize', () => { + it('tolerates certain bad values correctly', () => { + expect( + deserialize({ + processors: [ + { set: { field: 'test', value: 123 } }, + { badType1: null } as any, + { badType2: 1 } as any, + ], + onFailure: [ + { + gsub: { + field: '_index', + pattern: '(.monitoring-\\w+-)6(-.+)', + replacement: '$17$2', + }, + }, + ], + }) + ).toEqual({ + processors: [ + { + id: expect.any(String), + type: 'set', + options: { + field: 'test', + value: 123, + }, + }, + { + id: expect.any(String), + onFailure: undefined, + type: 'badType1', + options: {}, + }, + { + id: expect.any(String), + onFailure: undefined, + type: 'badType2', + options: {}, + }, + ], + onFailure: [ + { + id: expect.any(String), + type: 'gsub', + onFailure: undefined, + options: { + field: '_index', + pattern: '(.monitoring-\\w+-)6(-.+)', + replacement: '$17$2', + }, + }, + ], + }); + }); + + it('throws for unacceptable values', () => { + expect(() => { + deserialize({ + processors: [{ reallyBad: undefined } as any, 1 as any], + onFailure: [], + }); + }).toThrow('Invalid processor type'); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.ts index fa1d041bdaba3..1e9a97e189a5e 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/deserialize.ts @@ -22,12 +22,16 @@ const getProcessorType = (processor: Processor): string => { * See the definition of {@link ProcessorInternal} for why this works to extract the * processor type. */ - return Object.keys(processor)[0]!; + const type: unknown = Object.keys(processor)[0]; + if (typeof type !== 'string') { + throw new Error(`Invalid processor type. Received "${type}"`); + } + return type; }; const convertToPipelineInternalProcessor = (processor: Processor): ProcessorInternal => { const type = getProcessorType(processor); - const { on_failure: originalOnFailure, ...options } = processor[type]; + const { on_failure: originalOnFailure, ...options } = processor[type] ?? {}; const onFailure = originalOnFailure?.length ? convertProcessors(originalOnFailure) : (originalOnFailure as ProcessorInternal[] | undefined); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/global_on_failure_processors_editor.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/global_on_failure_processors_editor.tsx new file mode 100644 index 0000000000000..7c62383024cfe --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/global_on_failure_processors_editor.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +import { PipelineProcessorsEditor } from '../components'; + +export const GlobalOnFailureProcessorsEditor: FunctionComponent = () => { + return ; +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/index.ts new file mode 100644 index 0000000000000..6c544b31df439 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/index.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export { GlobalOnFailureProcessorsEditor } from './global_on_failure_processors_editor'; +export { ProcessorsEditor } from './processors_editor'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/processors_editor.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/processors_editor.tsx new file mode 100644 index 0000000000000..108b22be43ca0 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/editors/processors_editor.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +import { PipelineProcessorsEditor } from '../components'; + +export const ProcessorsEditor: FunctionComponent = () => { + return ; +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts index 58d6e492b85e5..89bc50fc0600a 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/index.ts @@ -4,8 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -export { PipelineProcessorsEditor, OnUpdateHandler } from './pipeline_processors_editor.container'; +export { PipelineProcessorsContextProvider, Props } from './context'; -export { OnUpdateHandlerArg } from './types'; +export { ProcessorsEditor, GlobalOnFailureProcessorsEditor } from './editors'; + +export { OnUpdateHandlerArg, OnUpdateHandler } from './types'; export { SerializeResult } from './serialize'; + +export { LoadFromJsonButton, OnDoneLoadJsonHandler } from './components'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.container.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.container.tsx deleted file mode 100644 index 7257677c08fc2..0000000000000 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.container.tsx +++ /dev/null @@ -1,74 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { FunctionComponent, useMemo } from 'react'; - -import { Processor } from '../../../../common/types'; - -import { deserialize } from './deserialize'; - -import { useProcessorsState } from './processors_reducer'; - -import { PipelineProcessorsContextProvider } from './context'; - -import { OnUpdateHandlerArg } from './types'; - -import { PipelineProcessorsEditor as PipelineProcessorsEditorUI } from './pipeline_processors_editor'; - -export interface Props { - value: { - processors: Processor[]; - onFailure?: Processor[]; - }; - onUpdate: (arg: OnUpdateHandlerArg) => void; - isTestButtonDisabled: boolean; - onTestPipelineClick: () => void; - esDocsBasePath: string; - /** - * Give users a way to react to this component opening a flyout - */ - onFlyoutOpen: () => void; -} - -export type OnUpdateHandler = (arg: OnUpdateHandlerArg) => void; - -export const PipelineProcessorsEditor: FunctionComponent = ({ - value: { processors: originalProcessors, onFailure: originalOnFailureProcessors }, - onFlyoutOpen, - onUpdate, - isTestButtonDisabled, - esDocsBasePath, - onTestPipelineClick, -}) => { - const deserializedResult = useMemo( - () => - deserialize({ - processors: originalProcessors, - onFailure: originalOnFailureProcessors, - }), - // TODO: Re-add the dependency on the props and make the state set-able - // when new props come in so that this component will be controllable - [] // eslint-disable-line react-hooks/exhaustive-deps - ); - const [processorsState, processorsDispatch] = useProcessorsState(deserializedResult); - const { processors, onFailure } = processorsState; - - return ( - - - - ); -}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.tsx deleted file mode 100644 index 09e77c5107754..0000000000000 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/pipeline_processors_editor.tsx +++ /dev/null @@ -1,239 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { FormattedMessage } from '@kbn/i18n/react'; -import React, { FunctionComponent, useCallback, memo, useState, useEffect } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiSwitch } from '@elastic/eui'; - -import './pipeline_processors_editor.scss'; - -import { - ProcessorsTitleAndTestButton, - OnFailureProcessorsTitle, - ProcessorsTree, - ProcessorRemoveModal, - OnActionHandler, - OnSubmitHandler, - ProcessorSettingsForm, -} from './components'; - -import { ProcessorInternal, OnUpdateHandlerArg, FormValidityState, OnFormUpdateArg } from './types'; - -import { - ON_FAILURE_STATE_SCOPE, - PROCESSOR_STATE_SCOPE, - isOnFailureSelector, -} from './processors_reducer'; - -const PROCESSORS_BASE_SELECTOR = [PROCESSOR_STATE_SCOPE]; -const ON_FAILURE_BASE_SELECTOR = [ON_FAILURE_STATE_SCOPE]; - -import { serialize } from './serialize'; -import { getValue } from './utils'; -import { usePipelineProcessorsContext } from './context'; - -export interface Props { - processors: ProcessorInternal[]; - onFailureProcessors: ProcessorInternal[]; - onUpdate: (arg: OnUpdateHandlerArg) => void; - isTestButtonDisabled: boolean; - onTestPipelineClick: () => void; - onFlyoutOpen: () => void; -} - -export const PipelineProcessorsEditor: FunctionComponent = memo( - function PipelineProcessorsEditor({ - processors, - onFailureProcessors, - onTestPipelineClick, - isTestButtonDisabled, - onUpdate, - onFlyoutOpen, - }) { - const { - state: { editor, processorsDispatch }, - } = usePipelineProcessorsContext(); - - const { mode: editorMode, setMode: setEditorMode } = editor; - - const [formState, setFormState] = useState({ - validate: () => Promise.resolve(true), - }); - - const onFormUpdate = useCallback<(arg: OnFormUpdateArg) => void>( - ({ isValid, validate }) => { - setFormState({ - validate: async () => { - if (isValid === undefined) { - return validate(); - } - return isValid; - }, - }); - }, - [setFormState] - ); - - const [showGlobalOnFailure, setShowGlobalOnFailure] = useState( - Boolean(onFailureProcessors.length) - ); - - useEffect(() => { - onUpdate({ - validate: async () => { - const formValid = await formState.validate(); - return formValid && editorMode.id === 'idle'; - }, - getData: () => - serialize({ - onFailure: showGlobalOnFailure ? onFailureProcessors : undefined, - processors, - }), - }); - }, [processors, onFailureProcessors, onUpdate, formState, editorMode, showGlobalOnFailure]); - - const onSubmit = useCallback( - (processorTypeAndOptions) => { - switch (editorMode.id) { - case 'creatingProcessor': - processorsDispatch({ - type: 'addProcessor', - payload: { - processor: { ...processorTypeAndOptions }, - targetSelector: editorMode.arg.selector, - }, - }); - break; - case 'editingProcessor': - processorsDispatch({ - type: 'updateProcessor', - payload: { - processor: { - ...editorMode.arg.processor, - ...processorTypeAndOptions, - }, - selector: editorMode.arg.selector, - }, - }); - break; - default: - } - setEditorMode({ id: 'idle' }); - }, - [processorsDispatch, editorMode, setEditorMode] - ); - - const onCloseSettingsForm = useCallback(() => { - setEditorMode({ id: 'idle' }); - setFormState({ validate: () => Promise.resolve(true) }); - }, [setFormState, setEditorMode]); - - const onTreeAction = useCallback( - (action) => { - switch (action.type) { - case 'addProcessor': - setEditorMode({ id: 'creatingProcessor', arg: { selector: action.payload.target } }); - break; - case 'move': - setEditorMode({ id: 'idle' }); - processorsDispatch({ - type: 'moveProcessor', - payload: action.payload, - }); - break; - case 'selectToMove': - setEditorMode({ id: 'movingProcessor', arg: action.payload.info }); - break; - case 'cancelMove': - setEditorMode({ id: 'idle' }); - break; - } - }, - [processorsDispatch, setEditorMode] - ); - - const movingProcessor = editorMode.id === 'movingProcessor' ? editorMode.arg : undefined; - - return ( -
- - - - - - - - - - - - - - - - } - checked={showGlobalOnFailure} - onChange={(e) => setShowGlobalOnFailure(e.target.checked)} - data-test-subj="pipelineEditorOnFailureToggle" - /> - - {showGlobalOnFailure ? ( - - - - ) : undefined} - - {editorMode.id === 'editingProcessor' || editorMode.id === 'creatingProcessor' ? ( - - ) : undefined} - {editorMode.id === 'removingProcessor' && ( - { - if (confirmed) { - processorsDispatch({ - type: 'removeProcessor', - payload: { selector }, - }); - } - setEditorMode({ id: 'idle' }); - }} - /> - )} -
- ); - } -); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/index.ts index 7265f63f45a5d..0e06b8d55d379 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/index.ts @@ -12,6 +12,6 @@ export { Action, } from './processors_reducer'; -export { ON_FAILURE_STATE_SCOPE, PROCESSOR_STATE_SCOPE } from './constants'; +export * from './constants'; export { isChildPath, isOnFailureSelector } from './utils'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/processors_reducer.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/processors_reducer.ts index 4e069aab8bdd1..295e7ff141117 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/processors_reducer.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/processors_reducer/processors_reducer.ts @@ -38,6 +38,12 @@ export type Action = payload: { source: ProcessorSelector; }; + } + | { + type: 'loadProcessors'; + payload: { + newState: DeserializeResult; + }; }; export type ProcessorsDispatch = Dispatch; @@ -124,6 +130,14 @@ export const reducer: Reducer = (state, action) => { return setValue(sourceProcessorsArraySelector, state, sourceProcessorsArray); } + if (action.type === 'loadProcessors') { + return { + ...action.payload.newState, + onFailure: action.payload.newState.onFailure ?? [], + isRoot: true, + }; + } + return state; }; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/types.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/types.ts index aa39fca29fa8b..aea8f0f0910f4 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/types.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/types.ts @@ -38,6 +38,8 @@ export interface OnUpdateHandlerArg extends FormValidityState { getData: () => SerializeResult; } +export type OnUpdateHandler = (arg: OnUpdateHandlerArg) => void; + /** * The editor can be in different modes. This enables us to hold * a reference to data dispatch to the reducer (like the {@link ProcessorSelector} diff --git a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts index 05e7d1e41c5fa..d2c4b73a48767 100644 --- a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts +++ b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts @@ -22,6 +22,8 @@ export { UseRequestConfig, WithPrivileges, Monaco, + JsonEditor, + OnJsonEditorUpdateHandler, } from '../../../../src/plugins/es_ui_shared/public/'; export { diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5c5d270d324ff..9a3f52a0ce47c 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -8469,13 +8469,7 @@ "xpack.ingestPipelines.form.nameFieldLabel": "名前", "xpack.ingestPipelines.form.nameTitle": "名前", "xpack.ingestPipelines.form.onFailureFieldHelpText": "JSONフォーマットを使用:{code}", - "xpack.ingestPipelines.form.onFailureFieldLabel": "障害プロセッサー(任意)", - "xpack.ingestPipelines.form.onFailureProcessorsJsonError": "入力が無効です。", "xpack.ingestPipelines.form.pipelineNameRequiredError": "名前が必要です。", - "xpack.ingestPipelines.form.processorsFieldHelpText": "JSONフォーマットを使用:{code}", - "xpack.ingestPipelines.form.processorsFieldLabel": "プロセッサー", - "xpack.ingestPipelines.form.processorsJsonError": "入力が無効です。", - "xpack.ingestPipelines.form.processorsRequiredError": "プロセッサーが必要です。", "xpack.ingestPipelines.form.saveButtonLabel": "パイプラインを保存", "xpack.ingestPipelines.form.savePipelineError": "パイプラインを作成できません", "xpack.ingestPipelines.form.savingButtonLabel": "保存中…", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index c71215d2bfb74..7aebb59e0f8a2 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8473,13 +8473,7 @@ "xpack.ingestPipelines.form.nameFieldLabel": "名称", "xpack.ingestPipelines.form.nameTitle": "名称", "xpack.ingestPipelines.form.onFailureFieldHelpText": "使用 JSON 格式:{code}", - "xpack.ingestPipelines.form.onFailureFieldLabel": "失败处理器(可选)", - "xpack.ingestPipelines.form.onFailureProcessorsJsonError": "输入无效。", "xpack.ingestPipelines.form.pipelineNameRequiredError": "“名称”必填。", - "xpack.ingestPipelines.form.processorsFieldHelpText": "使用 JSON 格式:{code}", - "xpack.ingestPipelines.form.processorsFieldLabel": "处理器", - "xpack.ingestPipelines.form.processorsJsonError": "输入无效。", - "xpack.ingestPipelines.form.processorsRequiredError": "需要指定处理器。", "xpack.ingestPipelines.form.saveButtonLabel": "保存管道", "xpack.ingestPipelines.form.savePipelineError": "无法创建管道", "xpack.ingestPipelines.form.savingButtonLabel": "正在保存......", From 8bc27ec7ef79d52645b224e68db54a33ee99f6b8 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Fri, 3 Jul 2020 11:37:17 +0200 Subject: [PATCH 25/59] [APM] Optimize services overview (#69648) Co-authored-by: Elastic Machine --- .../apm/common/projections/services.ts | 28 +- .../common/utils/array_union_to_callable.ts | 14 + .../common/utils/join_by_key/index.test.ts | 104 ++++++ .../apm/common/utils/join_by_key/index.ts | 48 +++ x-pack/plugins/apm/common/utils/left_join.ts | 21 -- .../__snapshots__/queries.test.ts.snap | 268 ++++++++++++--- .../get_services/get_services_items.ts | 117 +++---- .../get_services/get_services_items_stats.ts | 309 ++++++++++++++++++ .../apm/server/lib/services/queries.test.ts | 4 +- 9 files changed, 756 insertions(+), 157 deletions(-) create mode 100644 x-pack/plugins/apm/common/utils/array_union_to_callable.ts create mode 100644 x-pack/plugins/apm/common/utils/join_by_key/index.test.ts create mode 100644 x-pack/plugins/apm/common/utils/join_by_key/index.ts delete mode 100644 x-pack/plugins/apm/common/utils/left_join.ts create mode 100644 x-pack/plugins/apm/server/lib/services/get_services/get_services_items_stats.ts diff --git a/x-pack/plugins/apm/common/projections/services.ts b/x-pack/plugins/apm/common/projections/services.ts index 80a3471e9c30d..809caeeaf6088 100644 --- a/x-pack/plugins/apm/common/projections/services.ts +++ b/x-pack/plugins/apm/common/projections/services.ts @@ -16,25 +16,37 @@ import { rangeFilter } from '../utils/range_filter'; export function getServicesProjection({ setup, + noEvents, }: { setup: Setup & SetupTimeRange & SetupUIFilters; + noEvents?: boolean; }) { const { start, end, uiFiltersES, indices } = setup; return { - index: [ - indices['apm_oss.metricsIndices'], - indices['apm_oss.errorIndices'], - indices['apm_oss.transactionIndices'], - ], + ...(noEvents + ? {} + : { + index: [ + indices['apm_oss.metricsIndices'], + indices['apm_oss.errorIndices'], + indices['apm_oss.transactionIndices'], + ], + }), body: { size: 0, query: { bool: { filter: [ - { - terms: { [PROCESSOR_EVENT]: ['transaction', 'error', 'metric'] }, - }, + ...(noEvents + ? [] + : [ + { + terms: { + [PROCESSOR_EVENT]: ['transaction', 'error', 'metric'], + }, + }, + ]), { range: rangeFilter(start, end) }, ...uiFiltersES, ], diff --git a/x-pack/plugins/apm/common/utils/array_union_to_callable.ts b/x-pack/plugins/apm/common/utils/array_union_to_callable.ts new file mode 100644 index 0000000000000..23ea86006b888 --- /dev/null +++ b/x-pack/plugins/apm/common/utils/array_union_to_callable.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { ValuesType } from 'utility-types'; + +// work around a TypeScript limitation described in https://stackoverflow.com/posts/49511416 + +export const arrayUnionToCallable = ( + array: T +): Array> => { + return array; +}; diff --git a/x-pack/plugins/apm/common/utils/join_by_key/index.test.ts b/x-pack/plugins/apm/common/utils/join_by_key/index.test.ts new file mode 100644 index 0000000000000..458d21bfea58f --- /dev/null +++ b/x-pack/plugins/apm/common/utils/join_by_key/index.test.ts @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { joinByKey } from './'; + +describe('joinByKey', () => { + it('joins by a string key', () => { + const joined = joinByKey( + [ + { + serviceName: 'opbeans-node', + avg: 10, + }, + { + serviceName: 'opbeans-node', + count: 12, + }, + { + serviceName: 'opbeans-java', + avg: 11, + }, + { + serviceName: 'opbeans-java', + p95: 18, + }, + ], + 'serviceName' + ); + + expect(joined.length).toBe(2); + + expect(joined).toEqual([ + { + serviceName: 'opbeans-node', + avg: 10, + count: 12, + }, + { + serviceName: 'opbeans-java', + avg: 11, + p95: 18, + }, + ]); + }); + + it('joins by a record key', () => { + const joined = joinByKey( + [ + { + key: { + serviceName: 'opbeans-node', + transactionName: '/api/opbeans-node', + }, + avg: 10, + }, + { + key: { + serviceName: 'opbeans-node', + transactionName: '/api/opbeans-node', + }, + count: 12, + }, + { + key: { + serviceName: 'opbeans-java', + transactionName: '/api/opbeans-java', + }, + avg: 11, + }, + { + key: { + serviceName: 'opbeans-java', + transactionName: '/api/opbeans-java', + }, + p95: 18, + }, + ], + 'key' + ); + + expect(joined.length).toBe(2); + + expect(joined).toEqual([ + { + key: { + serviceName: 'opbeans-node', + transactionName: '/api/opbeans-node', + }, + avg: 10, + count: 12, + }, + { + key: { + serviceName: 'opbeans-java', + transactionName: '/api/opbeans-java', + }, + avg: 11, + p95: 18, + }, + ]); + }); +}); diff --git a/x-pack/plugins/apm/common/utils/join_by_key/index.ts b/x-pack/plugins/apm/common/utils/join_by_key/index.ts new file mode 100644 index 0000000000000..b49f536400514 --- /dev/null +++ b/x-pack/plugins/apm/common/utils/join_by_key/index.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { UnionToIntersection, ValuesType } from 'utility-types'; +import { isEqual } from 'lodash'; + +/** + * Joins a list of records by a given key. Key can be any type of value, from + * strings to plain objects, as long as it is present in all records. `isEqual` + * is used for comparing keys. + * + * UnionToIntersection is needed to get all keys of union types, see below for + * example. + * + const agentNames = [{ serviceName: '', agentName: '' }]; + const transactionRates = [{ serviceName: '', transactionsPerMinute: 1 }]; + const flattened = joinByKey( + [...agentNames, ...transactionRates], + 'serviceName' + ); +*/ + +type JoinedReturnType< + T extends Record, + U extends UnionToIntersection, + V extends keyof T & keyof U +> = Array & Record>; + +export function joinByKey< + T extends Record, + U extends UnionToIntersection, + V extends keyof T & keyof U +>(items: T[], key: V): JoinedReturnType { + return items.reduce>((prev, current) => { + let item = prev.find((prevItem) => isEqual(prevItem[key], current[key])); + + if (!item) { + item = { ...current } as ValuesType>; + prev.push(item); + } else { + Object.assign(item, current); + } + + return prev; + }, []); +} diff --git a/x-pack/plugins/apm/common/utils/left_join.ts b/x-pack/plugins/apm/common/utils/left_join.ts deleted file mode 100644 index f3c4e48df755b..0000000000000 --- a/x-pack/plugins/apm/common/utils/left_join.ts +++ /dev/null @@ -1,21 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import { Assign, Omit } from 'utility-types'; - -export function leftJoin< - TL extends object, - K extends keyof TL, - TR extends Pick ->(leftRecords: TL[], matchKey: K, rightRecords: TR[]) { - const rightLookup = new Map( - rightRecords.map((record) => [record[matchKey], record]) - ); - return leftRecords.map((record) => { - const matchProp = (record[matchKey] as unknown) as TR[K]; - const matchingRightRecord = rightLookup.get(matchProp); - return { ...record, ...matchingRightRecord }; - }) as Array>>>; -} diff --git a/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap b/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap index 3f8d6b22cd000..0fc1f89a3723b 100644 --- a/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap +++ b/x-pack/plugins/apm/server/lib/services/__snapshots__/queries.test.ts.snap @@ -113,76 +113,244 @@ Object { `; exports[`services queries fetches the service items 1`] = ` -Object { - "body": Object { - "aggs": Object { - "services": Object { - "aggs": Object { - "agents": Object { - "terms": Object { - "field": "agent.name", - "size": 1, +Array [ + Object { + "body": Object { + "aggs": Object { + "services": Object { + "aggs": Object { + "average": Object { + "avg": Object { + "field": "transaction.duration.us", + }, }, }, - "avg": Object { - "avg": Object { - "field": "transaction.duration.us", + "terms": Object { + "field": "service.name", + "size": 500, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, + }, + Object { + "term": Object { + "processor.event": "transaction", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", + "size": 0, + }, + Object { + "body": Object { + "aggs": Object { + "services": Object { + "aggs": Object { + "agent_name": Object { + "top_hits": Object { + "_source": Array [ + "agent.name", + ], + "size": 1, + }, }, }, - "environments": Object { - "terms": Object { - "field": "service.environment", + "terms": Object { + "field": "service.name", + "size": 500, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, + }, + Object { + "terms": Object { + "processor.event": Array [ + "metric", + "error", + "transaction", + ], + }, }, + ], + }, + }, + "size": 0, + }, + "index": Array [ + "myIndex", + "myIndex", + "myIndex", + ], + }, + Object { + "body": Object { + "aggs": Object { + "services": Object { + "terms": Object { + "field": "service.name", + "size": 500, }, - "events": Object { - "terms": Object { - "field": "processor.event", + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, }, + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, + }, + Object { + "term": Object { + "processor.event": "transaction", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", + }, + Object { + "body": Object { + "aggs": Object { + "services": Object { + "terms": Object { + "field": "service.name", + "size": 500, }, }, - "terms": Object { - "field": "service.name", - "size": 500, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, + }, + Object { + "term": Object { + "processor.event": "error", + }, + }, + ], }, }, + "size": 0, }, - "query": Object { - "bool": Object { - "filter": Array [ - Object { - "terms": Object { - "processor.event": Array [ - "transaction", - "error", - "metric", - ], + "index": "myIndex", + }, + Object { + "body": Object { + "aggs": Object { + "services": Object { + "aggs": Object { + "environments": Object { + "terms": Object { + "field": "service.environment", + }, }, }, - Object { - "range": Object { - "@timestamp": Object { - "format": "epoch_millis", - "gte": 1528113600000, - "lte": 1528977600000, + "terms": Object { + "field": "service.name", + "size": 500, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, }, }, - }, - Object { - "term": Object { - "my.custom.ui.filter": "foo-bar", + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, }, - }, - ], + Object { + "terms": Object { + "processor.event": Array [ + "transaction", + "error", + "metric", + ], + }, + }, + ], + }, }, + "size": 0, }, - "size": 0, + "index": Array [ + "myIndex", + "myIndex", + "myIndex", + ], }, - "index": Array [ - "myIndex", - "myIndex", - "myIndex", - ], -} +] `; exports[`services queries fetches the service transaction types 1`] = ` diff --git a/x-pack/plugins/apm/server/lib/services/get_services/get_services_items.ts b/x-pack/plugins/apm/server/lib/services/get_services/get_services_items.ts index acf052affabdb..14772e77fe1c2 100644 --- a/x-pack/plugins/apm/server/lib/services/get_services/get_services_items.ts +++ b/x-pack/plugins/apm/server/lib/services/get_services/get_services_items.ts @@ -3,14 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - -import { mergeProjection } from '../../../../common/projections/util/merge_projection'; -import { - PROCESSOR_EVENT, - AGENT_NAME, - SERVICE_ENVIRONMENT, - TRANSACTION_DURATION, -} from '../../../../common/elasticsearch_fieldnames'; +import { joinByKey } from '../../../../common/utils/join_by_key'; import { PromiseReturnType } from '../../../../typings/common'; import { Setup, @@ -18,75 +11,45 @@ import { SetupUIFilters, } from '../../helpers/setup_request'; import { getServicesProjection } from '../../../../common/projections/services'; +import { + getTransactionDurationAverages, + getAgentNames, + getTransactionRates, + getErrorRates, + getEnvironments, +} from './get_services_items_stats'; export type ServiceListAPIResponse = PromiseReturnType; -export async function getServicesItems( - setup: Setup & SetupTimeRange & SetupUIFilters -) { - const { start, end, client } = setup; - - const projection = getServicesProjection({ setup }); - - const params = mergeProjection(projection, { - body: { - size: 0, - aggs: { - services: { - terms: { - ...projection.body.aggs.services.terms, - size: 500, - }, - aggs: { - avg: { - avg: { field: TRANSACTION_DURATION }, - }, - agents: { - terms: { field: AGENT_NAME, size: 1 }, - }, - events: { - terms: { field: PROCESSOR_EVENT }, - }, - environments: { - terms: { field: SERVICE_ENVIRONMENT }, - }, - }, - }, - }, - }, - }); - - const resp = await client.search(params); - const aggs = resp.aggregations; - - const serviceBuckets = aggs?.services.buckets || []; - - const items = serviceBuckets.map((bucket) => { - const eventTypes = bucket.events.buckets; - - const transactions = eventTypes.find((e) => e.key === 'transaction'); - const totalTransactions = transactions?.doc_count || 0; - - const errors = eventTypes.find((e) => e.key === 'error'); - const totalErrors = errors?.doc_count || 0; - - const deltaAsMinutes = (end - start) / 1000 / 60; - const transactionsPerMinute = totalTransactions / deltaAsMinutes; - const errorsPerMinute = totalErrors / deltaAsMinutes; - - const environmentsBuckets = bucket.environments.buckets; - const environments = environmentsBuckets.map( - (environmentBucket) => environmentBucket.key as string - ); - - return { - serviceName: bucket.key as string, - agentName: bucket.agents.buckets[0]?.key as string | undefined, - transactionsPerMinute, - errorsPerMinute, - avgResponseTime: bucket.avg.value, - environments, - }; - }); - - return items; +export type ServicesItemsSetup = Setup & SetupTimeRange & SetupUIFilters; +export type ServicesItemsProjection = ReturnType; + +export async function getServicesItems(setup: ServicesItemsSetup) { + const params = { + projection: getServicesProjection({ setup, noEvents: true }), + setup, + }; + + const [ + transactionDurationAverages, + agentNames, + transactionRates, + errorRates, + environments, + ] = await Promise.all([ + getTransactionDurationAverages(params), + getAgentNames(params), + getTransactionRates(params), + getErrorRates(params), + getEnvironments(params), + ]); + + const allMetrics = [ + ...transactionDurationAverages, + ...agentNames, + ...transactionRates, + ...errorRates, + ...environments, + ]; + + return joinByKey(allMetrics, 'serviceName'); } diff --git a/x-pack/plugins/apm/server/lib/services/get_services/get_services_items_stats.ts b/x-pack/plugins/apm/server/lib/services/get_services/get_services_items_stats.ts new file mode 100644 index 0000000000000..c28bcad841ffd --- /dev/null +++ b/x-pack/plugins/apm/server/lib/services/get_services/get_services_items_stats.ts @@ -0,0 +1,309 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { arrayUnionToCallable } from '../../../../common/utils/array_union_to_callable'; +import { + PROCESSOR_EVENT, + TRANSACTION_DURATION, + AGENT_NAME, + SERVICE_ENVIRONMENT, +} from '../../../../common/elasticsearch_fieldnames'; +import { mergeProjection } from '../../../../common/projections/util/merge_projection'; +import { ProcessorEvent } from '../../../../common/processor_event'; +import { + ServicesItemsSetup, + ServicesItemsProjection, +} from './get_services_items'; + +const MAX_NUMBER_OF_SERVICES = 500; + +const getDeltaAsMinutes = (setup: ServicesItemsSetup) => + (setup.end - setup.start) / 1000 / 60; + +interface AggregationParams { + setup: ServicesItemsSetup; + projection: ServicesItemsProjection; +} + +export const getTransactionDurationAverages = async ({ + setup, + projection, +}: AggregationParams) => { + const { client, indices } = setup; + + const response = await client.search( + mergeProjection(projection, { + size: 0, + index: indices['apm_oss.transactionIndices'], + body: { + query: { + bool: { + filter: projection.body.query.bool.filter.concat({ + term: { + [PROCESSOR_EVENT]: ProcessorEvent.transaction, + }, + }), + }, + }, + aggs: { + services: { + terms: { + ...projection.body.aggs.services.terms, + size: MAX_NUMBER_OF_SERVICES, + }, + aggs: { + average: { + avg: { + field: TRANSACTION_DURATION, + }, + }, + }, + }, + }, + }, + }) + ); + + const { aggregations } = response; + + if (!aggregations) { + return []; + } + + return aggregations.services.buckets.map((bucket) => ({ + serviceName: bucket.key as string, + avgResponseTime: bucket.average.value, + })); +}; + +export const getAgentNames = async ({ + setup, + projection, +}: AggregationParams) => { + const { client, indices } = setup; + const response = await client.search( + mergeProjection(projection, { + index: [ + indices['apm_oss.metricsIndices'], + indices['apm_oss.errorIndices'], + indices['apm_oss.transactionIndices'], + ], + body: { + size: 0, + query: { + bool: { + filter: [ + ...projection.body.query.bool.filter, + { + terms: { + [PROCESSOR_EVENT]: [ + ProcessorEvent.metric, + ProcessorEvent.error, + ProcessorEvent.transaction, + ], + }, + }, + ], + }, + }, + aggs: { + services: { + terms: { + ...projection.body.aggs.services.terms, + size: MAX_NUMBER_OF_SERVICES, + }, + aggs: { + agent_name: { + top_hits: { + _source: [AGENT_NAME], + size: 1, + }, + }, + }, + }, + }, + }, + }) + ); + + const { aggregations } = response; + + if (!aggregations) { + return []; + } + + return aggregations.services.buckets.map((bucket) => ({ + serviceName: bucket.key as string, + agentName: (bucket.agent_name.hits.hits[0]?._source as { + agent: { + name: string; + }; + }).agent.name, + })); +}; + +export const getTransactionRates = async ({ + setup, + projection, +}: AggregationParams) => { + const { client, indices } = setup; + const response = await client.search( + mergeProjection(projection, { + index: indices['apm_oss.transactionIndices'], + body: { + size: 0, + query: { + bool: { + filter: [ + ...projection.body.query.bool.filter, + { + term: { + [PROCESSOR_EVENT]: ProcessorEvent.transaction, + }, + }, + ], + }, + }, + aggs: { + services: { + terms: { + ...projection.body.aggs.services.terms, + size: MAX_NUMBER_OF_SERVICES, + }, + }, + }, + }, + }) + ); + + const { aggregations } = response; + + if (!aggregations) { + return []; + } + + const deltaAsMinutes = getDeltaAsMinutes(setup); + + return arrayUnionToCallable(aggregations.services.buckets).map((bucket) => { + const transactionsPerMinute = bucket.doc_count / deltaAsMinutes; + return { + serviceName: bucket.key as string, + transactionsPerMinute, + }; + }); +}; + +export const getErrorRates = async ({ + setup, + projection, +}: AggregationParams) => { + const { client, indices } = setup; + const response = await client.search( + mergeProjection(projection, { + index: indices['apm_oss.errorIndices'], + body: { + size: 0, + query: { + bool: { + filter: [ + ...projection.body.query.bool.filter, + { + term: { + [PROCESSOR_EVENT]: ProcessorEvent.error, + }, + }, + ], + }, + }, + aggs: { + services: { + terms: { + ...projection.body.aggs.services.terms, + size: MAX_NUMBER_OF_SERVICES, + }, + }, + }, + }, + }) + ); + + const { aggregations } = response; + + if (!aggregations) { + return []; + } + + const deltaAsMinutes = getDeltaAsMinutes(setup); + + return aggregations.services.buckets.map((bucket) => { + const errorsPerMinute = bucket.doc_count / deltaAsMinutes; + return { + serviceName: bucket.key as string, + errorsPerMinute, + }; + }); +}; + +export const getEnvironments = async ({ + setup, + projection, +}: AggregationParams) => { + const { client, indices } = setup; + const response = await client.search( + mergeProjection(projection, { + index: [ + indices['apm_oss.metricsIndices'], + indices['apm_oss.errorIndices'], + indices['apm_oss.transactionIndices'], + ], + body: { + size: 0, + query: { + bool: { + filter: [ + ...projection.body.query.bool.filter, + { + terms: { + [PROCESSOR_EVENT]: [ + ProcessorEvent.transaction, + ProcessorEvent.error, + ProcessorEvent.metric, + ], + }, + }, + ], + }, + }, + aggs: { + services: { + terms: { + ...projection.body.aggs.services.terms, + size: MAX_NUMBER_OF_SERVICES, + }, + aggs: { + environments: { + terms: { + field: SERVICE_ENVIRONMENT, + }, + }, + }, + }, + }, + }, + }) + ); + + const { aggregations } = response; + + if (!aggregations) { + return []; + } + + return aggregations.services.buckets.map((bucket) => ({ + serviceName: bucket.key as string, + environments: bucket.environments.buckets.map((env) => env.key as string), + })); +}; diff --git a/x-pack/plugins/apm/server/lib/services/queries.test.ts b/x-pack/plugins/apm/server/lib/services/queries.test.ts index d90cd8bf13908..b2fe7efeaf959 100644 --- a/x-pack/plugins/apm/server/lib/services/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/services/queries.test.ts @@ -40,7 +40,9 @@ describe('services queries', () => { it('fetches the service items', async () => { mock = await inspectSearchParams((setup) => getServicesItems(setup)); - expect(mock.params).toMatchSnapshot(); + const allParams = mock.spy.mock.calls.map((call) => call[0]); + + expect(allParams).toMatchSnapshot(); }); it('fetches the legacy data status', async () => { From bc1599ef6b17353990e0304a1dfce3492a34e5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loix?= Date: Fri, 3 Jul 2020 11:56:17 +0200 Subject: [PATCH 26/59] [Composable template] Create / Edit wizard (#70220) --- .../forms/form_wizard/form_wizard_context.tsx | 2 +- .../multi_content/multi_content_context.tsx | 7 +- .../forms/multi_content/use_multi_content.ts | 4 + src/plugins/es_ui_shared/public/index.ts | 7 +- .../forms/helpers/field_validators/is_json.ts | 9 +- .../home/index_templates_tab.helpers.ts | 54 ++-- .../home/index_templates_tab.test.ts | 30 +- .../template_create.test.tsx | 3 +- .../common/constants/index.ts | 1 - .../common/constants/index_templates.ts | 12 - .../plugins/index_management/common/index.ts | 2 +- .../index_management/common/lib/index.ts | 4 +- .../common/lib/template_serialization.ts | 5 +- .../common/types/templates.ts | 2 + .../component_templates.scss | 34 +++ .../component_templates.tsx | 169 +++++++++++ .../component_templates_list.tsx | 28 ++ .../component_templates_list_item.scss | 31 +++ .../component_templates_list_item.tsx | 103 +++++++ .../component_templates_selection.tsx | 64 +++++ .../component_templates_selector.scss | 36 +++ .../component_templates_selector.tsx | 263 ++++++++++++++++++ .../components/create_button_popover.tsx | 85 ++++++ .../components/filter_list_button.tsx | 91 ++++++ .../components/index.ts | 8 + .../component_template_selector/index.ts | 7 + .../component_templates_context.tsx | 2 + .../components/component_templates/index.ts | 2 + .../components/component_templates/lib/api.ts | 4 +- .../component_templates/lib/request.ts | 8 +- .../component_templates/shared_imports.ts | 1 + .../components/shared/components/index.ts | 2 + .../components/template_content_indicator.tsx | 0 .../components/wizard_steps/step_aliases.tsx | 4 +- .../wizard_steps/step_aliases_container.tsx | 2 +- .../components/wizard_steps/step_mappings.tsx | 6 +- .../wizard_steps/step_mappings_container.tsx | 4 +- .../components/wizard_steps/step_settings.tsx | 4 +- .../wizard_steps/step_settings_container.tsx | 4 +- .../application/components/shared/index.ts | 1 + .../components/template_form/steps/index.ts | 1 + .../template_form/steps/step_components.tsx | 112 ++++++++ .../steps/step_components_container.tsx | 25 ++ .../template_form/steps/step_logistics.tsx | 187 ++++++++++--- .../steps/step_logistics_container.tsx | 12 +- .../template_form/steps/step_review.tsx | 103 ++++++- .../template_form/template_form.tsx | 53 ++-- .../template_form/template_form_schemas.tsx | 47 ++++ .../home/template_list/components/index.ts | 1 - .../template_details/template_details.tsx | 4 +- .../template_table/template_table.tsx | 11 +- .../home/template_list/template_list.tsx | 7 +- .../template_table/template_table.tsx | 57 +++- .../template_create/template_create.tsx | 20 +- .../public/application/services/routing.ts | 12 +- .../index_management/public/shared_imports.ts | 6 +- .../server/client/elasticsearch.ts | 28 ++ .../server/routes/api/templates/lib.ts | 65 +++++ .../api/templates/register_create_route.ts | 27 +- .../api/templates/register_get_routes.ts | 60 ++-- .../api/templates/register_update_route.ts | 26 +- .../routes/api/templates/validate_schemas.ts | 3 + .../index_management/templates.helpers.js | 88 +++--- .../management/index_management/templates.js | 154 ++++++++-- x-pack/test_utils/router_helpers.tsx | 7 +- x-pack/test_utils/testbed/types.ts | 2 +- 66 files changed, 1890 insertions(+), 333 deletions(-) delete mode 100644 x-pack/plugins/index_management/common/constants/index_templates.ts create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.scss create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.scss create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selection.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.scss create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/create_button_popover.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/filter_list_button.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/index.ts create mode 100644 x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/index.ts rename x-pack/plugins/index_management/public/application/{sections/home/template_list => components/shared}/components/template_content_indicator.tsx (100%) create mode 100644 x-pack/plugins/index_management/public/application/components/template_form/steps/step_components.tsx create mode 100644 x-pack/plugins/index_management/public/application/components/template_form/steps/step_components_container.tsx create mode 100644 x-pack/plugins/index_management/server/routes/api/templates/lib.ts diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx b/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx index 5667220881df2..39b91a2e20b53 100644 --- a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx +++ b/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx @@ -23,7 +23,7 @@ import { WithMultiContent, useMultiContentContext, HookProps } from '../multi_co export interface Props { onSave: (data: T) => void | Promise; - children: JSX.Element | JSX.Element[]; + children: JSX.Element | Array; isEditing?: boolean; defaultActiveStep?: number; defaultValue?: HookProps['defaultValue']; diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx b/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx index 5fbe3d2bbbdd4..210b0cedccd06 100644 --- a/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx +++ b/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx @@ -54,7 +54,7 @@ export function useMultiContentContext(contentId: keyof T) { +export function useContent(contentId: K) { const { updateContentAt, saveSnapshotAndRemoveContent, getData } = useMultiContentContext(); const updateContent = useCallback( @@ -71,8 +71,11 @@ export function useContent(contentId: }; }, [contentId, saveSnapshotAndRemoveContent]); + const data = getData(); + const defaultValue = data[contentId]; + return { - defaultValue: getData()[contentId]!, + defaultValue, updateContent, getData, }; diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts b/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts index 0a2c7bb651959..adc68a39a4a5b 100644 --- a/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts +++ b/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts @@ -150,6 +150,10 @@ export function useMultiContent({ * Validate the multi-content active content(s) in the DOM */ const validate = useCallback(async () => { + if (Object.keys(contents.current).length === 0) { + return Boolean(validation.isValid); + } + const updatedValidation = {} as { [key in keyof T]?: boolean | undefined }; for (const [id, _content] of Object.entries(contents.current)) { diff --git a/src/plugins/es_ui_shared/public/index.ts b/src/plugins/es_ui_shared/public/index.ts index 28baa3d8372f0..67c1ee3c7d677 100644 --- a/src/plugins/es_ui_shared/public/index.ts +++ b/src/plugins/es_ui_shared/public/index.ts @@ -22,6 +22,7 @@ * In the future, each top level folder should be exported like that to avoid naming collision */ import * as Forms from './forms'; +import * as Monaco from './monaco'; export { JsonEditor, OnJsonEditorUpdateHandler } from './components/json_editor'; @@ -53,10 +54,6 @@ export { expandLiteralStrings, } from './console_lang'; -import * as Monaco from './monaco'; - -export { Monaco }; - export { AuthorizationContext, AuthorizationProvider, @@ -69,7 +66,7 @@ export { useAuthorizationContext, } from './authorization'; -export { Forms }; +export { Monaco, Forms }; /** dummy plugin, we just want esUiShared to have its own bundle */ export function plugin() { diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts b/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts index dc8321aa07004..019a0e8053d0d 100644 --- a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts +++ b/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts @@ -21,12 +21,13 @@ import { ValidationFunc } from '../../hook_form_lib'; import { isJSON } from '../../../validators/string'; import { ERROR_CODE } from './types'; -export const isJsonField = (message: string) => ( - ...args: Parameters -): ReturnType> => { +export const isJsonField = ( + message: string, + { allowEmptyString = false }: { allowEmptyString?: boolean } = {} +) => (...args: Parameters): ReturnType> => { const [{ value }] = args; - if (typeof value !== 'string') { + if (typeof value !== 'string' || (allowEmptyString && value.trim() === '')) { return; } diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.helpers.ts index 98bd3077670a7..5eb4eaf6e2ca1 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.helpers.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.helpers.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ReactWrapper } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { @@ -13,44 +12,21 @@ import { TestBedConfig, findTestSubject, } from '../../../../../test_utils'; -// NOTE: We have to use the Home component instead of the TemplateList component because we depend -// upon react router to provide the name of the template to load in the detail panel. -import { IndexManagementHome } from '../../../public/application/sections/home'; // eslint-disable-line @kbn/eslint/no-restricted-paths -import { indexManagementStore } from '../../../public/application/store'; // eslint-disable-line @kbn/eslint/no-restricted-paths +import { TemplateList } from '../../../public/application/sections/home/template_list'; // eslint-disable-line @kbn/eslint/no-restricted-paths import { TemplateDeserialized } from '../../../common'; -import { WithAppDependencies, services, TestSubjects } from '../helpers'; +import { WithAppDependencies, TestSubjects } from '../helpers'; const testBedConfig: TestBedConfig = { - store: () => indexManagementStore(services as any), memoryRouter: { - initialEntries: [`/indices`], - componentRoutePath: `/:section(indices|templates)`, + initialEntries: [`/templates`], + componentRoutePath: `/templates/:templateName?`, }, doMountAsync: true, }; -const initTestBed = registerTestBed(WithAppDependencies(IndexManagementHome), testBedConfig); - -export interface IndexTemplatesTabTestBed extends TestBed { - findAction: (action: 'edit' | 'clone' | 'delete') => ReactWrapper; - actions: { - goToTemplatesList: () => void; - selectDetailsTab: (tab: 'summary' | 'settings' | 'mappings' | 'aliases') => void; - clickReloadButton: () => void; - clickTemplateAction: ( - name: TemplateDeserialized['name'], - action: 'edit' | 'clone' | 'delete' - ) => void; - clickTemplateAt: (index: number) => void; - clickCloseDetailsButton: () => void; - clickActionMenu: (name: TemplateDeserialized['name']) => void; - toggleViewItem: (view: 'composable' | 'system') => void; - }; -} - -export const setup = async (): Promise => { - const testBed = await initTestBed(); +const initTestBed = registerTestBed(WithAppDependencies(TemplateList), testBedConfig); +const createActions = (testBed: TestBed) => { /** * Additional helpers */ @@ -64,11 +40,6 @@ export const setup = async (): Promise => { /** * User Actions */ - - const goToTemplatesList = () => { - testBed.find('templatesTab').simulate('click'); - }; - const selectDetailsTab = (tab: 'summary' | 'settings' | 'mappings' | 'aliases') => { const tabs = ['summary', 'settings', 'mappings', 'aliases']; @@ -136,10 +107,8 @@ export const setup = async (): Promise => { }; return { - ...testBed, findAction, actions: { - goToTemplatesList, selectDetailsTab, clickReloadButton, clickTemplateAction, @@ -150,3 +119,14 @@ export const setup = async (): Promise => { }, }; }; + +export const setup = async (): Promise => { + const testBed = await initTestBed(); + + return { + ...testBed, + ...createActions(testBed), + }; +}; + +export type IndexTemplatesTabTestBed = TestBed & ReturnType; diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts index 2ff3743cd866c..fb3e16e5345cb 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts @@ -30,28 +30,15 @@ describe('Index Templates tab', () => { server.restore(); }); - beforeEach(async () => { - httpRequestsMockHelpers.setLoadIndicesResponse([]); - - await act(async () => { - testBed = await setup(); - }); - }); - describe('when there are no index templates', () => { - beforeEach(async () => { - const { actions, component } = testBed; - + test('should display an empty prompt', async () => { httpRequestsMockHelpers.setLoadTemplatesResponse({ templates: [], legacyTemplates: [] }); await act(async () => { - actions.goToTemplatesList(); + testBed = await setup(); }); + const { exists, component } = testBed; component.update(); - }); - - test('should display an empty prompt', async () => { - const { exists } = testBed; expect(exists('sectionLoading')).toBe(false); expect(exists('emptyPrompt')).toBe(true); @@ -119,14 +106,12 @@ describe('Index Templates tab', () => { const legacyTemplates = [template4, template5, template6]; beforeEach(async () => { - const { actions, component } = testBed; - httpRequestsMockHelpers.setLoadTemplatesResponse({ templates, legacyTemplates }); await act(async () => { - actions.goToTemplatesList(); + testBed = await setup(); }); - component.update(); + testBed.component.update(); }); test('should list them in the table', async () => { @@ -151,6 +136,7 @@ describe('Index Templates tab', () => { composedOfString, priorityFormatted, 'M S A', // Mappings Settings Aliases badges + '', // Column of actions ]); }); @@ -192,8 +178,10 @@ describe('Index Templates tab', () => { ); }); - test('should have a button to create a new template', () => { + test('should have a button to create a template', () => { const { exists } = testBed; + // Both composable and legacy templates + expect(exists('createTemplateButton')).toBe(true); expect(exists('createLegacyTemplateButton')).toBe(true); }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx index 07a27e2414aed..69d7a13edfcfb 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_create.test.tsx @@ -7,7 +7,6 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; -import { CREATE_LEGACY_TEMPLATE_BY_DEFAULT } from '../../../common'; import { setupEnvironment, nextTick } from '../helpers'; import { @@ -369,7 +368,7 @@ describe.skip('', () => { aliases: ALIASES, }, _kbnMeta: { - isLegacy: CREATE_LEGACY_TEMPLATE_BY_DEFAULT, + isLegacy: false, isManaged: false, }, }; diff --git a/x-pack/plugins/index_management/common/constants/index.ts b/x-pack/plugins/index_management/common/constants/index.ts index 526b9fede2a67..d1700f0e611c0 100644 --- a/x-pack/plugins/index_management/common/constants/index.ts +++ b/x-pack/plugins/index_management/common/constants/index.ts @@ -9,7 +9,6 @@ export { BASE_PATH } from './base_path'; export { API_BASE_PATH } from './api_base_path'; export { INVALID_INDEX_PATTERN_CHARS, INVALID_TEMPLATE_NAME_CHARS } from './invalid_characters'; export * from './index_statuses'; -export { CREATE_LEGACY_TEMPLATE_BY_DEFAULT } from './index_templates'; export { UIM_APP_NAME, diff --git a/x-pack/plugins/index_management/common/constants/index_templates.ts b/x-pack/plugins/index_management/common/constants/index_templates.ts deleted file mode 100644 index 7696b3832c51e..0000000000000 --- a/x-pack/plugins/index_management/common/constants/index_templates.ts +++ /dev/null @@ -1,12 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -/** - * Up until the end of the 8.x release cycle we need to support both - * legacy and composable index template formats. This constant keeps track of whether - * we create legacy index template format by default in the UI. - */ -export const CREATE_LEGACY_TEMPLATE_BY_DEFAULT = true; diff --git a/x-pack/plugins/index_management/common/index.ts b/x-pack/plugins/index_management/common/index.ts index 4ad428744deab..119d4e0c54edd 100644 --- a/x-pack/plugins/index_management/common/index.ts +++ b/x-pack/plugins/index_management/common/index.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -export { PLUGIN, API_BASE_PATH, CREATE_LEGACY_TEMPLATE_BY_DEFAULT, BASE_PATH } from './constants'; +export { PLUGIN, API_BASE_PATH, BASE_PATH } from './constants'; export { getTemplateParameter } from './lib'; diff --git a/x-pack/plugins/index_management/common/lib/index.ts b/x-pack/plugins/index_management/common/lib/index.ts index 4e76a40ced524..6b1005b4faa05 100644 --- a/x-pack/plugins/index_management/common/lib/index.ts +++ b/x-pack/plugins/index_management/common/lib/index.ts @@ -7,9 +7,11 @@ export { deserializeDataStream, deserializeDataStreamList } from './data_stream_serialization'; export { - deserializeLegacyTemplateList, + deserializeTemplate, deserializeTemplateList, deserializeLegacyTemplate, + deserializeLegacyTemplateList, + serializeTemplate, serializeLegacyTemplate, } from './template_serialization'; diff --git a/x-pack/plugins/index_management/common/lib/template_serialization.ts b/x-pack/plugins/index_management/common/lib/template_serialization.ts index 249881f668d9f..608a8b8aca294 100644 --- a/x-pack/plugins/index_management/common/lib/template_serialization.ts +++ b/x-pack/plugins/index_management/common/lib/template_serialization.ts @@ -13,7 +13,7 @@ import { const hasEntries = (data: object = {}) => Object.entries(data).length > 0; export function serializeTemplate(templateDeserialized: TemplateDeserialized): TemplateSerialized { - const { version, priority, indexPatterns, template, composedOf } = templateDeserialized; + const { version, priority, indexPatterns, template, composedOf, _meta } = templateDeserialized; return { version, @@ -21,6 +21,7 @@ export function serializeTemplate(templateDeserialized: TemplateDeserialized): T template, index_patterns: indexPatterns, composed_of: composedOf, + _meta, }; } @@ -34,6 +35,7 @@ export function deserializeTemplate( index_patterns: indexPatterns, template = {}, priority, + _meta, composed_of: composedOf, } = templateEs; const { settings } = template; @@ -46,6 +48,7 @@ export function deserializeTemplate( template, ilmPolicy: settings?.index?.lifecycle, composedOf, + _meta, _kbnMeta: { isManaged: Boolean(managedTemplatePrefix && name.startsWith(managedTemplatePrefix)), }, diff --git a/x-pack/plugins/index_management/common/types/templates.ts b/x-pack/plugins/index_management/common/types/templates.ts index 006a2d9dea8f2..14318b5fa2a8d 100644 --- a/x-pack/plugins/index_management/common/types/templates.ts +++ b/x-pack/plugins/index_management/common/types/templates.ts @@ -21,6 +21,7 @@ export interface TemplateSerialized { composed_of?: string[]; version?: number; priority?: number; + _meta?: { [key: string]: any }; } /** @@ -43,6 +44,7 @@ export interface TemplateDeserialized { ilmPolicy?: { name: string; }; + _meta?: { [key: string]: any }; _kbnMeta: { isManaged: boolean; isLegacy?: boolean; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.scss b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.scss new file mode 100644 index 0000000000000..51e8a829e81b1 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.scss @@ -0,0 +1,34 @@ + + +/** + * [1] Will center vertically the empty search result + */ + +$heightHeader: $euiSizeL * 2; + +.componentTemplates { + @include euiBottomShadowFlat; + height: 100%; + + &__header { + height: $heightHeader; + + .euiFormControlLayout { + max-width: initial; + } + } + + &__searchBox { + border-bottom: $euiBorderThin; + box-shadow: none; + max-width: initial; + } + + &__listWrapper { + height: calc(100% - #{$heightHeader}); + + &--is-empty { + display: flex; // [1] + } + } +} diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.tsx new file mode 100644 index 0000000000000..64c7cd400ba0d --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates.tsx @@ -0,0 +1,169 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import classNames from 'classnames'; +import React, { useState, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFlexGroup, EuiFlexItem, EuiFieldSearch, EuiEmptyPrompt, EuiButton } from '@elastic/eui'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { FilterListButton } from './components'; +import { ComponentTemplatesList } from './component_templates_list'; +import { Props as ComponentTemplatesListItemProps } from './component_templates_list_item'; + +import './component_templates.scss'; + +interface Props { + isLoading: boolean; + components: ComponentTemplateListItem[]; + listItemProps: Omit; +} + +interface Filters { + [key: string]: { name: string; checked: 'on' | 'off' }; +} + +function fuzzyMatch(searchValue: string, text: string) { + const pattern = `.*${searchValue.split('').join('.*')}.*`; + const regex = new RegExp(pattern); + return regex.test(text); +} + +const i18nTexts = { + filters: { + settings: i18n.translate( + 'xpack.idxMgmt.componentTemplatesSelector.filters.indexSettingsLabel', + { defaultMessage: 'Index settings' } + ), + mappings: i18n.translate('xpack.idxMgmt.componentTemplatesSelector.filters.mappingsLabel', { + defaultMessage: 'Mappings', + }), + aliases: i18n.translate('xpack.idxMgmt.componentTemplatesSelector.filters.aliasesLabel', { + defaultMessage: 'Aliases', + }), + }, + searchBoxPlaceholder: i18n.translate( + 'xpack.idxMgmt.componentTemplatesSelector.searchBox.placeholder', + { + defaultMessage: 'Search components', + } + ), +}; + +const getInitialFilters = (): Filters => ({ + settings: { + name: i18nTexts.filters.settings, + checked: 'off', + }, + mappings: { + name: i18nTexts.filters.mappings, + checked: 'off', + }, + aliases: { + name: i18nTexts.filters.aliases, + checked: 'off', + }, +}); + +export const ComponentTemplates = ({ isLoading, components, listItemProps }: Props) => { + const [searchValue, setSearchValue] = useState(''); + + const [filters, setFilters] = useState(getInitialFilters); + + const filteredComponents = useMemo(() => { + if (isLoading) { + return []; + } + + return components.filter((component) => { + if (filters.settings.checked === 'on' && !component.hasSettings) { + return false; + } + if (filters.mappings.checked === 'on' && !component.hasMappings) { + return false; + } + if (filters.aliases.checked === 'on' && !component.hasAliases) { + return false; + } + + if (searchValue.trim() === '') { + return true; + } + + const match = fuzzyMatch(searchValue, component.name); + return match; + }); + }, [isLoading, components, searchValue, filters]); + + const isSearchResultEmpty = filteredComponents.length === 0 && components.length > 0; + + if (isLoading) { + return null; + } + + const clearSearch = () => { + setSearchValue(''); + setFilters(getInitialFilters()); + }; + + const renderEmptyResult = () => { + return ( + + + + } + actions={ + + + + } + /> + ); + }; + + return ( +
+
+ + + { + setSearchValue(e.target.value); + }} + aria-label={i18nTexts.searchBoxPlaceholder} + className="componentTemplates__searchBox" + /> + + + + + +
+
+ {isSearchResultEmpty ? ( + renderEmptyResult() + ) : ( + + )} +
+
+ ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list.tsx new file mode 100644 index 0000000000000..0c64c38c8963f --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { + ComponentTemplatesListItem, + Props as ComponentTemplatesListItemProps, +} from './component_templates_list_item'; + +interface Props { + components: ComponentTemplateListItem[]; + listItemProps: Omit; +} + +export const ComponentTemplatesList = ({ components, listItemProps }: Props) => { + return ( + <> + {components.map((component) => ( + + ))} + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.scss b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.scss new file mode 100644 index 0000000000000..b454d8697c5fc --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.scss @@ -0,0 +1,31 @@ +.componentTemplatesListItem { + background-color: white; + padding: $euiSizeM; + border-bottom: $euiBorderThin; + position: relative; + height: $euiSizeL * 2; + + &--selected { + &::before { + content: ''; + background-color: rgba(255, 255, 255, 0.7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + } + + &__contentIndicator { + flex-direction: row; + } + + &__checkIcon { + position: absolute; + right: $euiSize; + top: $euiSize; + z-index: 2; + } +} diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.tsx new file mode 100644 index 0000000000000..ad75c8dcbcc54 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_list_item.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import classNames from 'classnames'; +import React from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiButtonIcon, + EuiLink, + EuiIcon, + EuiToolTip, +} from '@elastic/eui'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { TemplateContentIndicator } from '../../shared'; + +import './component_templates_list_item.scss'; + +interface Action { + label: string; + icon: string; + handler: (component: ComponentTemplateListItem) => void; +} +export interface Props { + component: ComponentTemplateListItem; + isSelected?: boolean | ((component: ComponentTemplateListItem) => boolean); + onViewDetail: (component: ComponentTemplateListItem) => void; + actions?: Action[]; + dragHandleProps?: { [key: string]: any }; +} + +export const ComponentTemplatesListItem = ({ + component, + onViewDetail, + actions, + isSelected = false, + dragHandleProps, +}: Props) => { + const hasActions = actions && actions.length > 0; + const isSelectedValue = typeof isSelected === 'function' ? isSelected(component) : isSelected; + const isDraggable = Boolean(dragHandleProps); + + return ( +
+ + + + {isDraggable && ( + +
+ +
+
+ )} + + {/* {component.name} */} + onViewDetail(component)}>{component.name} + + + + +
+
+ + {/* Actions */} + {hasActions && !isSelectedValue && ( + + + {actions!.map((action, i) => ( + + + action.handler(component)} + data-test-subj="addPropertyButton" + aria-label={action.label} + /> + + + ))} + + + )} +
+ + {/* Check icon when selected */} + {isSelectedValue && ( + + )} +
+ ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selection.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selection.tsx new file mode 100644 index 0000000000000..0a305eec19180 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selection.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { EuiDragDropContext, EuiDraggable, EuiDroppable, euiDragDropReorder } from '@elastic/eui'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { + ComponentTemplatesListItem, + Props as ComponentTemplatesListItemProps, +} from './component_templates_list_item'; + +interface DraggableLocation { + droppableId: string; + index: number; +} + +interface Props { + components: ComponentTemplateListItem[]; + onReorder: (components: ComponentTemplateListItem[]) => void; + listItemProps: Omit; +} + +export const ComponentTemplatesSelection = ({ components, onReorder, listItemProps }: Props) => { + const onDragEnd = ({ + source, + destination, + }: { + source?: DraggableLocation; + destination?: DraggableLocation; + }) => { + if (source && destination) { + const items = euiDragDropReorder(components, source.index, destination.index); + onReorder(items); + } + }; + + return ( + + + {components.map((component, idx) => ( + + {(provided) => ( + + )} + + ))} + + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.scss b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.scss new file mode 100644 index 0000000000000..6abbbe65790e7 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.scss @@ -0,0 +1,36 @@ +/* +[1] Height to align left and right column headers +*/ + +.componentTemplatesSelector { + height: 480px; + + &__selection { + @include euiBottomShadowFlat; + + padding: 0 $euiSize $euiSize; + color: $euiColorDarkShade; + + &--is-empty { + align-items: center; + justify-content: center; + } + + &__header { + background-color: $euiColorLightestShade; + border-bottom: $euiBorderThin; + color: $euiColorInk; + height: $euiSizeXXL; // [1] + line-height: $euiSizeXXL; // [1] + font-size: $euiSizeM; + margin-bottom: $euiSizeS; + margin-left: $euiSize * -1; + margin-right: $euiSize * -1; + padding-left: $euiSize; + + &__count { + font-weight: 600; + } + } + } +} diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.tsx new file mode 100644 index 0000000000000..af48c3c79379a --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/component_templates_selector.tsx @@ -0,0 +1,263 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import classNames from 'classnames'; +import React, { useState, useEffect, useRef } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiEmptyPrompt, EuiLink, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { SectionError, SectionLoading } from '../shared_imports'; +import { ComponentTemplateDetailsFlyout } from '../component_template_details'; +import { CreateButtonPopOver } from './components'; +import { ComponentTemplates } from './component_templates'; +import { ComponentTemplatesSelection } from './component_templates_selection'; +import { useApi } from '../component_templates_context'; + +import './component_templates_selector.scss'; + +interface Props { + onChange: (components: string[]) => void; + onComponentsLoaded: (components: ComponentTemplateListItem[]) => void; + defaultValue: string[]; + docUri: string; + emptyPrompt?: { + text?: string | JSX.Element; + showCreateButton?: boolean; + }; +} + +const i18nTexts = { + icons: { + view: i18n.translate('xpack.idxMgmt.componentTemplatesSelector.viewItemIconLabel', { + defaultMessage: 'View', + }), + select: i18n.translate('xpack.idxMgmt.componentTemplatesSelector.selectItemIconLabel', { + defaultMessage: 'Select', + }), + remove: i18n.translate('xpack.idxMgmt.componentTemplatesSelector.removeItemIconLabel', { + defaultMessage: 'Remove', + }), + }, +}; + +export const ComponentTemplatesSelector = ({ + onChange, + defaultValue, + onComponentsLoaded, + docUri, + emptyPrompt: { text, showCreateButton } = {}, +}: Props) => { + const { data: components, isLoading, error } = useApi().useLoadComponentTemplates(); + const [selectedComponent, setSelectedComponent] = useState(null); + const [componentsSelected, setComponentsSelected] = useState([]); + const isInitialized = useRef(false); + + const hasSelection = Object.keys(componentsSelected).length > 0; + const hasComponents = components && components.length > 0 ? true : false; + + useEffect(() => { + if (components) { + if ( + defaultValue.length > 0 && + componentsSelected.length === 0 && + isInitialized.current === false + ) { + // Once the components are loaded we check the ones selected + // from the defaultValue provided + const nextComponentsSelected = defaultValue + .map((name) => components.find((comp) => comp.name === name)) + .filter(Boolean) as ComponentTemplateListItem[]; + + setComponentsSelected(nextComponentsSelected); + onChange(nextComponentsSelected.map(({ name }) => name)); + isInitialized.current = true; + } else { + onChange(componentsSelected.map(({ name }) => name)); + } + } + }, [defaultValue, components, componentsSelected, onChange]); + + useEffect(() => { + if (!isLoading && !error) { + onComponentsLoaded(components ?? []); + } + }, [isLoading, error, components, onComponentsLoaded]); + + const onSelectionReorder = (reorderedComponents: ComponentTemplateListItem[]) => { + setComponentsSelected(reorderedComponents); + }; + + const renderLoading = () => ( + + + + ); + + const renderError = () => ( + + } + error={error!} + /> + ); + + const renderSelector = () => ( + + {/* Selection */} + + {hasSelection ? ( + <> +
+ + {componentsSelected.length} + + ), + }} + /> +
+
+ { + setSelectedComponent(component.name); + }, + actions: [ + { + label: i18nTexts.icons.remove, + icon: 'minusInCircle', + handler: (component: ComponentTemplateListItem) => { + setComponentsSelected((prev) => { + return prev.filter(({ name }) => component.name !== name); + }); + }, + }, + ], + }} + /> +
+ + ) : ( +
+ +
+ )} +
+ + {/* List of components */} + + { + setSelectedComponent(component.name); + }, + actions: [ + { + label: i18nTexts.icons.select, + icon: 'plusInCircle', + handler: (component: ComponentTemplateListItem) => { + setComponentsSelected((prev) => { + return [...prev, component]; + }); + }, + }, + ], + isSelected: (component: ComponentTemplateListItem) => { + return componentsSelected.find(({ name }) => component.name === name) !== undefined; + }, + }} + /> + +
+ ); + + const renderComponentDetails = () => { + if (!selectedComponent) { + return null; + } + + return ( + setSelectedComponent(null)} + componentTemplateName={selectedComponent} + /> + ); + }; + + if (isLoading) { + return renderLoading(); + } else if (error) { + return renderError(); + } else if (hasComponents) { + return ( + <> + {renderSelector()} + {renderComponentDetails()} + + ); + } + + // No components: render empty prompt + const emptyPromptBody = ( + +

+ {text ?? ( + + )} +
+ + + +

+
+ ); + return ( + + + + } + body={emptyPromptBody} + actions={showCreateButton ? : undefined} + data-test-subj="emptyPrompt" + /> + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/create_button_popover.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/create_button_popover.tsx new file mode 100644 index 0000000000000..941e8ec362de2 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/create_button_popover.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; + +import { EuiPopover, EuiButton, EuiContextMenu } from '@elastic/eui'; + +interface Props { + anchorPosition?: 'upCenter' | 'downCenter'; +} + +export const CreateButtonPopOver = ({ anchorPosition = 'upCenter' }: Props) => { + const [isPopoverOpen, setIsPopOverOpen] = useState(false); + + return ( + setIsPopOverOpen((prev) => !prev)} + > + + + } + isOpen={isPopoverOpen} + closePopover={() => setIsPopOverOpen(false)} + panelPaddingSize="none" + withTitle + anchorPosition={anchorPosition} + repositionOnScroll + > + { + // console.log('Create component template...'); + }, + }, + { + name: i18n.translate( + 'xpack.idxMgmt.componentTemplatesFlyout.createComponentTemplateFromExistingButtonLabel', + { + defaultMessage: 'From existing index template', + } + ), + icon: 'symlink', + onClick: () => { + // console.log('Create component template from index template...'); + }, + }, + ], + }, + ]} + /> + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/filter_list_button.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/filter_list_button.tsx new file mode 100644 index 0000000000000..7236a385a704e --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/filter_list_button.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFilterButton, EuiPopover, EuiFilterSelectItem } from '@elastic/eui'; + +interface Filter { + name: string; + checked: 'on' | 'off'; +} + +interface Props { + filters: Filters; + onChange(filters: Filters): void; +} + +export interface Filters { + [key: string]: Filter; +} + +export function FilterListButton({ onChange, filters }: Props) { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + const activeFilters = Object.values(filters).filter((v) => (v as Filter).checked === 'on'); + + const onButtonClick = () => { + setIsPopoverOpen(!isPopoverOpen); + }; + + const closePopover = () => { + setIsPopoverOpen(false); + }; + + const toggleFilter = (filter: string) => { + const previousValue = filters[filter].checked; + const nextValue = previousValue === 'on' ? 'off' : 'on'; + + onChange({ + ...filters, + [filter]: { + ...filters[filter], + checked: nextValue, + }, + }); + }; + + const button = ( + 0} + numActiveFilters={activeFilters.length} + data-test-subj="viewButton" + > + + + ); + + return ( + +
+ {Object.entries(filters).map(([filter, item], index) => ( + toggleFilter(filter)} + data-test-subj="filterItem" + > + {(item as Filter).name} + + ))} +
+
+ ); +} diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/index.ts b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/index.ts new file mode 100644 index 0000000000000..999b2e64cf133 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/components/index.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './create_button_popover'; +export * from './filter_list_button'; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/index.ts b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/index.ts new file mode 100644 index 0000000000000..261a3d50d4626 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_selector/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { ComponentTemplatesSelector } from './component_templates_selector'; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx index c78d24f126e29..bfea8d39e1203 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx @@ -61,3 +61,5 @@ export const useComponentTemplatesContext = () => { } return ctx; }; + +export const useApi = () => useComponentTemplatesContext().api; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/index.ts b/x-pack/plugins/index_management/public/application/components/component_templates/index.ts index 72e79a57ae413..52235502e33df 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/index.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/index.ts @@ -9,3 +9,5 @@ export { ComponentTemplatesProvider } from './component_templates_context'; export { ComponentTemplateList } from './component_template_list'; export { ComponentTemplateDetailsFlyout } from './component_template_details'; + +export * from './component_template_selector'; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts b/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts index 4a8cf965adfb9..63fe127c6b2d7 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ComponentTemplateListItem, ComponentTemplateDeserialized } from '../shared_imports'; +import { ComponentTemplateListItem, ComponentTemplateDeserialized, Error } from '../shared_imports'; import { UIM_COMPONENT_TEMPLATE_DELETE_MANY, UIM_COMPONENT_TEMPLATE_DELETE } from '../constants'; import { UseRequestHook, SendRequestHook } from './request'; @@ -15,7 +15,7 @@ export const getApi = ( trackMetric: (type: 'loaded' | 'click' | 'count', eventName: string) => void ) => { function useLoadComponentTemplates() { - return useRequest({ + return useRequest({ path: `${apiBasePath}/component_templates`, method: 'get', }); diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/lib/request.ts b/x-pack/plugins/index_management/public/application/components/component_templates/lib/request.ts index 97ffa4d875ecb..27ee2bb81caf1 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/lib/request.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/lib/request.ts @@ -15,13 +15,15 @@ import { useRequest as _useRequest, } from '../shared_imports'; -export type UseRequestHook = (config: UseRequestConfig) => UseRequestResponse; +export type UseRequestHook = ( + config: UseRequestConfig +) => UseRequestResponse; export type SendRequestHook = (config: SendRequestConfig) => Promise; -export const getUseRequest = (httpClient: HttpSetup): UseRequestHook => ( +export const getUseRequest = (httpClient: HttpSetup): UseRequestHook => ( config: UseRequestConfig ) => { - return _useRequest(httpClient, config); + return _useRequest(httpClient, config); }; export const getSendRequest = (httpClient: HttpSetup): SendRequestHook => ( diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts b/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts index 4e56f4a8c9818..bd19c2004894c 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/shared_imports.ts @@ -18,6 +18,7 @@ export { Error, useAuthorizationContext, NotAuthorizedSection, + Forms, } from '../../../../../../../src/plugins/es_ui_shared/public'; export { TabMappings, TabSettings, TabAliases } from '../shared'; diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/index.ts b/x-pack/plugins/index_management/public/application/components/shared/components/index.ts index b67a9c355e723..b0a76b828449c 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/index.ts +++ b/x-pack/plugins/index_management/public/application/components/shared/components/index.ts @@ -12,3 +12,5 @@ export { StepSettingsContainer, CommonWizardSteps, } from './wizard_steps'; + +export { TemplateContentIndicator } from './template_content_indicator'; diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/components/template_content_indicator.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/template_content_indicator.tsx similarity index 100% rename from x-pack/plugins/index_management/public/application/sections/home/template_list/components/template_content_indicator.tsx rename to x-pack/plugins/index_management/public/application/components/shared/components/template_content_indicator.tsx diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx index 0d28ec4b50c9a..d71d72d873c8e 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases.tsx @@ -23,13 +23,13 @@ import { Forms } from '../../../../../shared_imports'; import { useJsonStep } from './use_json_step'; interface Props { - defaultValue: { [key: string]: any }; + defaultValue?: { [key: string]: any }; onChange: (content: Forms.Content) => void; esDocsBase: string; } export const StepAliases: React.FunctionComponent = React.memo( - ({ defaultValue, onChange, esDocsBase }) => { + ({ defaultValue = {}, onChange, esDocsBase }) => { const { jsonContent, setJsonContent, error } = useJsonStep({ defaultValue, onChange, diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases_container.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases_container.tsx index a5953ea00a106..c8297e6f298b6 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases_container.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_aliases_container.tsx @@ -14,7 +14,7 @@ interface Props { } export const StepAliasesContainer: React.FunctionComponent = ({ esDocsBase }) => { - const { defaultValue, updateContent } = Forms.useContent('aliases'); + const { defaultValue, updateContent } = Forms.useContent('aliases'); return ( diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx index 2b9b689e17cb9..bbf7a04080a28 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx @@ -24,14 +24,14 @@ import { } from '../../../mappings_editor'; interface Props { - defaultValue: { [key: string]: any }; onChange: (content: Forms.Content) => void; - indexSettings?: IndexSettings; esDocsBase: string; + defaultValue?: { [key: string]: any }; + indexSettings?: IndexSettings; } export const StepMappings: React.FunctionComponent = React.memo( - ({ defaultValue, onChange, indexSettings, esDocsBase }) => { + ({ defaultValue = {}, onChange, indexSettings, esDocsBase }) => { const [mappings, setMappings] = useState(defaultValue); const onMappingsEditorUpdate = useCallback( diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings_container.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings_container.tsx index 34e05d88c651d..38c4a85bbe0ff 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings_container.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings_container.tsx @@ -14,7 +14,9 @@ interface Props { } export const StepMappingsContainer: React.FunctionComponent = ({ esDocsBase }) => { - const { defaultValue, updateContent, getData } = Forms.useContent('mappings'); + const { defaultValue, updateContent, getData } = Forms.useContent( + 'mappings' + ); return ( void; esDocsBase: string; + defaultValue?: { [key: string]: any }; } export const StepSettings: React.FunctionComponent = React.memo( - ({ defaultValue, onChange, esDocsBase }) => { + ({ defaultValue = {}, onChange, esDocsBase }) => { const { jsonContent, setJsonContent, error } = useJsonStep({ defaultValue, onChange, diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings_container.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings_container.tsx index c540ddceb95c2..42be2c4b28c10 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings_container.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_settings_container.tsx @@ -14,7 +14,9 @@ interface Props { } export const StepSettingsContainer = React.memo(({ esDocsBase }: Props) => { - const { defaultValue, updateContent } = Forms.useContent('settings'); + const { defaultValue, updateContent } = Forms.useContent( + 'settings' + ); return ( diff --git a/x-pack/plugins/index_management/public/application/components/shared/index.ts b/x-pack/plugins/index_management/public/application/components/shared/index.ts index 897e86c99eca0..9b0eeb7d18f6e 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/index.ts +++ b/x-pack/plugins/index_management/public/application/components/shared/index.ts @@ -12,4 +12,5 @@ export { StepMappingsContainer, StepSettingsContainer, CommonWizardSteps, + TemplateContentIndicator, } from './components'; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/index.ts b/x-pack/plugins/index_management/public/application/components/template_form/steps/index.ts index b7e3e36e61814..d8baca2db78a0 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/steps/index.ts +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/index.ts @@ -5,4 +5,5 @@ */ export { StepLogisticsContainer } from './step_logistics_container'; +export { StepComponentContainer } from './step_components_container'; export { StepReviewContainer } from './step_review_container'; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components.tsx new file mode 100644 index 0000000000000..01771f40f89ea --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components.tsx @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useState, useCallback } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiTitle, + EuiText, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiButtonEmpty, +} from '@elastic/eui'; + +import { ComponentTemplateListItem } from '../../../../../common'; +import { Forms } from '../../../../shared_imports'; +import { ComponentTemplatesSelector } from '../../component_templates'; + +interface Props { + esDocsBase: string; + onChange: (content: Forms.Content) => void; + defaultValue?: string[]; +} + +const i18nTexts = { + description: ( + + ), +}; + +export const StepComponents = ({ defaultValue = [], onChange, esDocsBase }: Props) => { + const [state, setState] = useState<{ + isLoadingComponents: boolean; + components: ComponentTemplateListItem[]; + }>({ isLoadingComponents: true, components: [] }); + + const onComponentsLoaded = useCallback((components: ComponentTemplateListItem[]) => { + setState({ isLoadingComponents: false, components }); + }, []); + + const onComponentSelectionChange = useCallback( + (components: string[]) => { + onChange({ isValid: true, validate: async () => true, getData: () => components }); + }, + [onChange] + ); + + const showHeader = state.isLoadingComponents === true || state.components.length > 0; + const docUri = `${esDocsBase}/indices-component-template.html`; + + const renderHeader = () => { + if (!showHeader) { + return null; + } + + return ( + <> + + + +

+ +

+
+ + + + +

{i18nTexts.description}

+
+
+ + + + + + +
+ + + + ); + }; + + return ( +
+ {renderHeader()} + + +
+ ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components_container.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components_container.tsx new file mode 100644 index 0000000000000..b9b09bf0e3d9a --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_components_container.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { Forms } from '../../../../shared_imports'; +import { documentationService } from '../../../services/documentation'; +import { WizardContent } from '../template_form'; +import { StepComponents } from './step_components'; + +export const StepComponentContainer = () => { + const { defaultValue, updateContent } = Forms.useContent( + 'components' + ); + + return ( + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx index d011b4b06546a..44ec4db0873f3 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics.tsx @@ -8,7 +8,15 @@ import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiButtonEmpty, EuiSpacer } from ' import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { useForm, Form, getUseField, getFormRow, Field, Forms } from '../../../../shared_imports'; +import { + useForm, + Form, + getUseField, + getFormRow, + Field, + Forms, + JsonEditorField, +} from '../../../../shared_imports'; import { documentationService } from '../../../services/documentation'; import { schemas, nameConfig, nameConfigWithoutValidations } from '../template_form_schemas'; @@ -47,6 +55,15 @@ const fieldsMeta = { }), testSubject: 'orderField', }, + priority: { + title: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.priorityTitle', { + defaultMessage: 'Merge priority', + }), + description: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.priorityDescription', { + defaultMessage: 'The merge priority when multiple templates match an index.', + }), + testSubject: 'priorityField', + }, version: { title: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.versionTitle', { defaultMessage: 'Version', @@ -62,20 +79,26 @@ interface Props { defaultValue: { [key: string]: any }; onChange: (content: Forms.Content) => void; isEditing?: boolean; + isLegacy?: boolean; } export const StepLogistics: React.FunctionComponent = React.memo( - ({ defaultValue, isEditing, onChange }) => { + ({ defaultValue, isEditing = false, onChange, isLegacy = false }) => { const { form } = useForm({ schema: schemas.logistics, defaultValue, options: { stripEmptyFields: false }, }); + /** + * When the consumer call validate() on this step, we submit the form so it enters the "isSubmitted" state + * and we can display the form errors on top of the forms if there are any. + */ + const validate = async () => { + return (await form.submit()).isValid; + }; + useEffect(() => { - const validate = async () => { - return (await form.submit()).isValid; - }; onChange({ isValid: form.isValid, validate, @@ -83,10 +106,22 @@ export const StepLogistics: React.FunctionComponent = React.memo( }); }, [form.isValid, onChange]); // eslint-disable-line react-hooks/exhaustive-deps - const { name, indexPatterns, order, version } = fieldsMeta; + useEffect(() => { + const subscription = form.subscribe(({ data, isValid }) => { + onChange({ + isValid, + validate, + getData: data.format, + }); + }); + return subscription.unsubscribe; + }, [onChange]); // eslint-disable-line react-hooks/exhaustive-deps + + const { name, indexPatterns, order, priority, version } = fieldsMeta; return ( -
+ <> + {/* Header */} @@ -114,46 +149,106 @@ export const StepLogistics: React.FunctionComponent = React.memo( + - {/* Name */} - - - - {/* Index patterns */} - - - - {/* Order */} - - - - {/* Version */} - - - - + +
+ {/* Name */} + + + + + {/* Index patterns */} + + + + + {/* Order */} + {isLegacy && ( + + + + )} + + {/* Priority */} + {isLegacy === false && ( + + + + )} + + {/* Version */} + + + + + {/* _meta */} + {isLegacy === false && ( + + + + } + > + + + )} +
+ ); } ); diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics_container.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics_container.tsx index 867ecff799858..68a3419499088 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics_container.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_logistics_container.tsx @@ -10,13 +10,19 @@ import { WizardContent } from '../template_form'; import { StepLogistics } from './step_logistics'; interface Props { + isLegacy?: boolean; isEditing?: boolean; } -export const StepLogisticsContainer = ({ isEditing = false }: Props) => { - const { defaultValue, updateContent } = Forms.useContent('logistics'); +export const StepLogisticsContainer = ({ isEditing, isLegacy }: Props) => { + const { defaultValue, updateContent } = Forms.useContent('logistics'); return ( - + ); }; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx index 7f301b0a9c282..880c7fbd7f23c 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx @@ -22,10 +22,7 @@ import { import { FormattedMessage } from '@kbn/i18n/react'; import { serializers } from '../../../../shared_imports'; -import { - serializeLegacyTemplate, - serializeTemplate, -} from '../../../../../common/lib/template_serialization'; +import { serializeLegacyTemplate, serializeTemplate } from '../../../../../common/lib'; import { TemplateDeserialized, getTemplateParameter } from '../../../../../common'; import { WizardSection } from '../template_form'; @@ -66,6 +63,9 @@ export const StepReview: React.FunctionComponent = React.memo( indexPatterns, version, order, + priority, + composedOf, + _meta, _kbnMeta: { isLegacy }, } = template!; @@ -96,6 +96,7 @@ export const StepReview: React.FunctionComponent = React.memo( + {/* Index patterns */} = React.memo( )} - - - - - {order ? order : } - + {/* Priority / Order */} + {isLegacy ? ( + <> + + + + + {order ? order : } + + + ) : ( + <> + + + + + {priority ? priority : } + + + )} + {/* Version */} = React.memo( {version ? version : } + + {/* components */} + {isLegacy !== true && ( + <> + + + + + {composedOf && composedOf.length > 0 ? ( + composedOf.length > 1 ? ( + +
    + {composedOf.map((component: string, i: number) => { + return ( +
  • + + {component} + +
  • + ); + })} +
+
+ ) : ( + composedOf.toString() + ) + ) : ( + + )} +
+ + )}
+ {/* Index settings */} = React.memo( {getDescriptionText(serializedSettings)} + + {/* Mappings */} = React.memo( {getDescriptionText(serializedMappings)} + + {/* Aliases */} = React.memo( {getDescriptionText(serializedAliases)} + + {/* Metadata (optional) */} + {isLegacy !== true && _meta && ( + <> + + + + + {JSON.stringify(_meta, null, 2)} + + + )}
@@ -181,7 +255,8 @@ export const StepReview: React.FunctionComponent = React.memo( ); const RequestTab = () => { - const endpoint = `PUT _template/${name || ''}`; + const esApiEndpoint = isLegacy ? '_template' : '_index_template'; + const endpoint = `PUT ${esApiEndpoint}/${name || ''}`; const templateString = JSON.stringify(serializedTemplate, null, 2); const request = `${endpoint}\n${templateString}`; diff --git a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx index 8a2c991aea8d0..269ad94251074 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx @@ -8,10 +8,10 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiSpacer } from '@elastic/eui'; -import { TemplateDeserialized, CREATE_LEGACY_TEMPLATE_BY_DEFAULT } from '../../../../common'; +import { TemplateDeserialized } from '../../../../common'; import { serializers, Forms } from '../../../shared_imports'; import { SectionError } from '../section_error'; -import { StepLogisticsContainer, StepReviewContainer } from './steps'; +import { StepLogisticsContainer, StepComponentContainer, StepReviewContainer } from './steps'; import { CommonWizardSteps, StepSettingsContainer, @@ -28,12 +28,14 @@ interface Props { clearSaveError: () => void; isSaving: boolean; saveError: any; + isLegacy?: boolean; defaultValue?: TemplateDeserialized; isEditing?: boolean; } export interface WizardContent extends CommonWizardSteps { logistics: Omit; + components: TemplateDeserialized['composedOf']; } export type WizardSection = keyof WizardContent | 'review'; @@ -45,6 +47,12 @@ const wizardSections: { [id: string]: { id: WizardSection; label: string } } = { defaultMessage: 'Logistics', }), }, + components: { + id: 'components', + label: i18n.translate('xpack.idxMgmt.templateForm.steps.componentsStepName', { + defaultMessage: 'Components', + }), + }, settings: { id: 'settings', label: i18n.translate('xpack.idxMgmt.templateForm.steps.settingsStepName', { @@ -72,9 +80,18 @@ const wizardSections: { [id: string]: { id: WizardSection; label: string } } = { }; export const TemplateForm = ({ - defaultValue = { + defaultValue, + isEditing, + isSaving, + isLegacy = false, + saveError, + clearSaveError, + onSave, +}: Props) => { + const indexTemplate = defaultValue ?? { name: '', indexPatterns: [], + composedOf: [], template: { settings: {}, mappings: {}, @@ -82,26 +99,23 @@ export const TemplateForm = ({ }, _kbnMeta: { isManaged: false, - isLegacy: CREATE_LEGACY_TEMPLATE_BY_DEFAULT, + isLegacy, }, - }, - isEditing, - isSaving, - saveError, - clearSaveError, - onSave, -}: Props) => { + }; + const { template: { settings, mappings, aliases }, + composedOf, _kbnMeta, ...logistics - } = defaultValue; + } = indexTemplate; const wizardDefaultValue: WizardContent = { logistics, settings, mappings, aliases, + components: indexTemplate.composedOf, }; const i18nTexts = { @@ -139,6 +153,7 @@ export const TemplateForm = ({ ): TemplateDeserialized => ({ ...initialTemplate, ...wizardData.logistics, + composedOf: wizardData.components, template: { settings: wizardData.settings, mappings: wizardData.mappings, @@ -148,7 +163,7 @@ export const TemplateForm = ({ const onSaveTemplate = useCallback( async (wizardData: WizardContent) => { - const template = buildTemplateObject(defaultValue)(wizardData); + const template = buildTemplateObject(indexTemplate)(wizardData); // We need to strip empty string, otherwise if the "order" or "version" // are not set, they will be empty string and ES expect a number for those parameters. @@ -160,7 +175,7 @@ export const TemplateForm = ({ clearSaveError(); }, - [defaultValue, onSave, clearSaveError] + [indexTemplate, onSave, clearSaveError] ); return ( @@ -177,9 +192,15 @@ export const TemplateForm = ({ label={wizardSections.logistics.label} isRequired > - + + {indexTemplate._kbnMeta.isLegacy !== true && ( + + + + )} + @@ -193,7 +214,7 @@ export const TemplateForm = ({ - + ); diff --git a/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx b/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx index 9ff73b71adf50..5af3b4dd00c4f 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/template_form_schemas.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiCode } from '@elastic/eui'; import { FormSchema, @@ -28,6 +29,7 @@ const { startsWithField, indexPatternField, lowerCaseStringField, + isJsonField, } = fieldValidators; const { toInt } = fieldFormatters; const indexPatternInvalidCharacters = INVALID_INDEX_PATTERN_CHARS.join(' '); @@ -133,6 +135,13 @@ export const schemas: Record = { }), formatters: [toInt], }, + priority: { + type: FIELD_TYPES.NUMBER, + label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.fieldPriorityLabel', { + defaultMessage: 'Priority (optional)', + }), + formatters: [toInt], + }, version: { type: FIELD_TYPES.NUMBER, label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.fieldVersionLabel', { @@ -140,5 +149,43 @@ export const schemas: Record = { }), formatters: [toInt], }, + _meta: { + label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.metaFieldEditorLabel', { + defaultMessage: '_meta field data (optional)', + }), + helpText: ( + {JSON.stringify({ arbitrary_data: 'anything_goes' })}, + }} + /> + ), + validations: [ + { + validator: isJsonField( + i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.metaFieldEditorJsonError', { + defaultMessage: 'The _meta field JSON is not valid.', + }), + { allowEmptyString: true } + ), + }, + ], + deserializer: (value: any) => { + if (value === '') { + return value; + } + return JSON.stringify(value, null, 2); + }, + serializer: (value: string) => { + try { + return JSON.parse(value); + } catch (error) { + // swallow error and return non-parsed value; + return value; + } + }, + }, }, }; diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/components/index.ts b/x-pack/plugins/index_management/public/application/sections/home/template_list/components/index.ts index dcaba319bb21a..156d792c26f1d 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/components/index.ts +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/components/index.ts @@ -5,4 +5,3 @@ */ export * from './filter_list_button'; -export * from './template_content_indicator'; diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_details/template_details.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_details/template_details.tsx index ab4ce6a61a9b6..f85b14ea0d2d5 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_details/template_details.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_details/template_details.tsx @@ -46,7 +46,7 @@ import { TabSummary } from '../../template_details/tabs'; interface Props { template: { name: string; isLegacy?: boolean }; onClose: () => void; - editTemplate: (name: string, isLegacy?: boolean) => void; + editTemplate: (name: string, isLegacy: boolean) => void; cloneTemplate: (name: string, isLegacy?: boolean) => void; reload: () => Promise; } @@ -290,7 +290,7 @@ export const LegacyTemplateDetails: React.FunctionComponent = ({ } ), icon: 'pencil', - onClick: () => editTemplate(templateName, isLegacy), + onClick: () => editTemplate(templateName, true), disabled: isManaged, }, { diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx index edce05018ce39..99915c2b70e2a 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx @@ -19,7 +19,7 @@ import { useServices } from '../../../../../app_context'; interface Props { templates: TemplateListItem[]; reload: () => Promise; - editTemplate: (name: string, isLegacy?: boolean) => void; + editTemplate: (name: string, isLegacy: boolean) => void; cloneTemplate: (name: string, isLegacy?: boolean) => void; history: ScopedHistory; } @@ -150,8 +150,8 @@ export const LegacyTemplateTable: React.FunctionComponent = ({ ), icon: 'pencil', type: 'icon', - onClick: ({ name, _kbnMeta: { isLegacy } }: TemplateListItem) => { - editTemplate(name, isLegacy); + onClick: ({ name }: TemplateListItem) => { + editTemplate(name, true); }, enabled: ({ _kbnMeta: { isManaged } }: TemplateListItem) => !isManaged, }, @@ -252,7 +252,10 @@ export const LegacyTemplateTable: React.FunctionComponent = ({ iconType="plusInCircle" data-test-subj="createLegacyTemplateButton" key="createTemplateButton" - {...reactRouterNavigate(history, '/create_template')} + {...reactRouterNavigate(history, { + pathname: '/create_template', + search: 'legacy=true', + })} > - + ) : null; diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx index 7c3f8c07a7e04..6a5328f76fb06 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx @@ -7,18 +7,27 @@ import React, { useState, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiInMemoryTable, EuiBasicTableColumn } from '@elastic/eui'; +import { EuiInMemoryTable, EuiBasicTableColumn, EuiButton } from '@elastic/eui'; +import { ScopedHistory } from 'kibana/public'; + import { TemplateListItem } from '../../../../../../common'; import { TemplateDeleteModal } from '../../../../components'; -import { SendRequestResponse } from '../../../../../shared_imports'; -import { TemplateContentIndicator } from '../components'; +import { SendRequestResponse, reactRouterNavigate } from '../../../../../shared_imports'; +import { TemplateContentIndicator } from '../../../../components/shared'; interface Props { templates: TemplateListItem[]; reload: () => Promise; + editTemplate: (name: string) => void; + history: ScopedHistory; } -export const TemplateTable: React.FunctionComponent = ({ templates, reload }) => { +export const TemplateTable: React.FunctionComponent = ({ + templates, + reload, + history, + editTemplate, +}) => { const [templatesToDelete, setTemplatesToDelete] = useState< Array<{ name: string; isLegacy?: boolean }> >([]); @@ -80,13 +89,11 @@ export const TemplateTable: React.FunctionComponent = ({ templates, reloa sortable: true, }, { - field: 'hasMappings', name: i18n.translate('xpack.idxMgmt.templateList.table.overridesColumnTitle', { defaultMessage: 'Overrides', }), truncateText: true, - sortable: false, - render: (_, item) => ( + render: (item: TemplateListItem) => ( = ({ templates, reloa /> ), }, + { + name: i18n.translate('xpack.idxMgmt.templateList.table.actionColumnTitle', { + defaultMessage: 'Actions', + }), + actions: [ + { + name: i18n.translate('xpack.idxMgmt.templateList.table.actionEditText', { + defaultMessage: 'Edit', + }), + isPrimary: true, + description: i18n.translate('xpack.idxMgmt.templateList.table.actionEditDecription', { + defaultMessage: 'Edit this template', + }), + icon: 'pencil', + type: 'icon', + onClick: ({ name }: TemplateListItem) => { + editTemplate(name); + }, + enabled: ({ _kbnMeta: { isManaged } }: TemplateListItem) => !isManaged, + }, + ], + }, ]; const pagination = { @@ -112,6 +141,20 @@ export const TemplateTable: React.FunctionComponent = ({ templates, reloa box: { incremental: true, }, + toolsRight: [ + + + , + ], }; return ( diff --git a/x-pack/plugins/index_management/public/application/sections/template_create/template_create.tsx b/x-pack/plugins/index_management/public/application/sections/template_create/template_create.tsx index f567b9835d53d..fb82f52968eb4 100644 --- a/x-pack/plugins/index_management/public/application/sections/template_create/template_create.tsx +++ b/x-pack/plugins/index_management/public/application/sections/template_create/template_create.tsx @@ -7,6 +7,8 @@ import React, { useEffect, useState } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiPageBody, EuiPageContent, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { useLocation } from 'react-router-dom'; +import { parse } from 'query-string'; import { TemplateForm } from '../../components'; import { breadcrumbService } from '../../services/breadcrumbs'; @@ -17,6 +19,8 @@ import { getTemplateDetailsLink } from '../../services/routing'; export const TemplateCreate: React.FunctionComponent = ({ history }) => { const [isSaving, setIsSaving] = useState(false); const [saveError, setSaveError] = useState(null); + const search = parse(useLocation().search.substring(1)); + const isLegacy = Boolean(search.legacy); const onSave = async (template: TemplateDeserialized) => { const { name } = template; @@ -49,10 +53,17 @@ export const TemplateCreate: React.FunctionComponent = ({ h

- + {isLegacy ? ( + + ) : ( + + )}

@@ -61,6 +72,7 @@ export const TemplateCreate: React.FunctionComponent = ({ h isSaving={isSaving} saveError={saveError} clearSaveError={clearSaveError} + isLegacy={isLegacy} />
diff --git a/x-pack/plugins/index_management/public/application/services/routing.ts b/x-pack/plugins/index_management/public/application/services/routing.ts index 2a895196189d0..8831fa2368f47 100644 --- a/x-pack/plugins/index_management/public/application/services/routing.ts +++ b/x-pack/plugins/index_management/public/application/services/routing.ts @@ -16,11 +16,19 @@ export const getTemplateDetailsLink = (name: string, isLegacy?: boolean, withHas }; export const getTemplateEditLink = (name: string, isLegacy?: boolean) => { - return encodeURI(`/edit_template/${encodePathForReactRouter(name)}?legacy=${isLegacy === true}`); + let url = `/edit_template/${encodePathForReactRouter(name)}`; + if (isLegacy) { + url = `${url}?legacy=true`; + } + return encodeURI(url); }; export const getTemplateCloneLink = (name: string, isLegacy?: boolean) => { - return encodeURI(`/clone_template/${encodePathForReactRouter(name)}?legacy=${isLegacy === true}`); + let url = `/clone_template/${encodePathForReactRouter(name)}`; + if (isLegacy) { + url = `${url}?legacy=true`; + } + return encodeURI(url); }; export const decodePathFromReactRouter = (pathname: string): string => { diff --git a/x-pack/plugins/index_management/public/shared_imports.ts b/x-pack/plugins/index_management/public/shared_imports.ts index 69cd07ba6dba0..ad221ae73fecf 100644 --- a/x-pack/plugins/index_management/public/shared_imports.ts +++ b/x-pack/plugins/index_management/public/shared_imports.ts @@ -29,7 +29,11 @@ export { serializers, } from '../../../../src/plugins/es_ui_shared/static/forms/helpers'; -export { getFormRow, Field } from '../../../../src/plugins/es_ui_shared/static/forms/components'; +export { + getFormRow, + Field, + JsonEditorField, +} from '../../../../src/plugins/es_ui_shared/static/forms/components'; export { isJSON } from '../../../../src/plugins/es_ui_shared/static/validators/string'; diff --git a/x-pack/plugins/index_management/server/client/elasticsearch.ts b/x-pack/plugins/index_management/server/client/elasticsearch.ts index 6c0fbe3dd6a65..9f8bce241ae69 100644 --- a/x-pack/plugins/index_management/server/client/elasticsearch.ts +++ b/x-pack/plugins/index_management/server/client/elasticsearch.ts @@ -126,6 +126,20 @@ export const elasticsearchJsPlugin = (Client: any, config: any, components: any) method: 'GET', }); + dataManagement.getComposableIndexTemplate = ca({ + urls: [ + { + fmt: '/_index_template/<%=name%>', + req: { + name: { + type: 'string', + }, + }, + }, + ], + method: 'GET', + }); + dataManagement.saveComposableIndexTemplate = ca({ urls: [ { @@ -154,4 +168,18 @@ export const elasticsearchJsPlugin = (Client: any, config: any, components: any) ], method: 'DELETE', }); + + dataManagement.existsTemplate = ca({ + urls: [ + { + fmt: '/_index_template/<%=name%>', + req: { + name: { + type: 'string', + }, + }, + }, + ], + method: 'HEAD', + }); }; diff --git a/x-pack/plugins/index_management/server/routes/api/templates/lib.ts b/x-pack/plugins/index_management/server/routes/api/templates/lib.ts new file mode 100644 index 0000000000000..fc5719cc04d0c --- /dev/null +++ b/x-pack/plugins/index_management/server/routes/api/templates/lib.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { serializeTemplate, serializeLegacyTemplate } from '../../../../common/lib'; +import { TemplateDeserialized, LegacyTemplateSerialized } from '../../../../common'; +import { CallAsCurrentUser } from '../../../types'; + +export const doesTemplateExist = async ({ + name, + callAsCurrentUser, + isLegacy, +}: { + name: string; + callAsCurrentUser: CallAsCurrentUser; + isLegacy?: boolean; +}) => { + if (isLegacy) { + return await callAsCurrentUser('indices.existsTemplate', { name }); + } + return await callAsCurrentUser('dataManagement.existsTemplate', { name }); +}; + +export const saveTemplate = async ({ + template, + callAsCurrentUser, + isLegacy, +}: { + template: TemplateDeserialized; + callAsCurrentUser: CallAsCurrentUser; + isLegacy?: boolean; +}) => { + const serializedTemplate = isLegacy + ? serializeLegacyTemplate(template) + : serializeTemplate(template); + + if (isLegacy) { + const { + order, + index_patterns, + version, + settings, + mappings, + aliases, + } = serializedTemplate as LegacyTemplateSerialized; + + return await callAsCurrentUser('indices.putTemplate', { + name: template.name, + order, + body: { + index_patterns, + version, + settings, + mappings, + aliases, + }, + }); + } + + return await callAsCurrentUser('dataManagement.saveComposableIndexTemplate', { + name: template.name, + body: serializedTemplate, + }); +}; diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts index e0d92b3800785..4b735c941be70 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts @@ -7,10 +7,10 @@ import { i18n } from '@kbn/i18n'; import { TemplateDeserialized } from '../../../../common'; -import { serializeLegacyTemplate } from '../../../../common/lib'; import { RouteDependencies } from '../../../types'; import { addBasePath } from '../index'; import { templateSchema } from './validate_schemas'; +import { saveTemplate, doesTemplateExist } from './lib'; const bodySchema = templateSchema; @@ -18,22 +18,17 @@ export function registerCreateRoute({ router, license, lib }: RouteDependencies) router.post( { path: addBasePath('/index_templates'), validate: { body: bodySchema } }, license.guardApiRoute(async (ctx, req, res) => { - const { callAsCurrentUser } = ctx.core.elasticsearch.legacy.client; + const { callAsCurrentUser } = ctx.dataManagement!.client; const template = req.body as TemplateDeserialized; const { _kbnMeta: { isLegacy }, } = template; - if (!isLegacy) { - return res.badRequest({ body: 'Only legacy index templates can be created.' }); - } - - const serializedTemplate = serializeLegacyTemplate(template); - const { order, index_patterns, version, settings, mappings, aliases } = serializedTemplate; - // Check that template with the same name doesn't already exist - const templateExists = await callAsCurrentUser('indices.existsTemplate', { + const templateExists = await doesTemplateExist({ name: template.name, + callAsCurrentUser, + isLegacy, }); if (templateExists) { @@ -51,17 +46,7 @@ export function registerCreateRoute({ router, license, lib }: RouteDependencies) try { // Otherwise create new index template - const response = await callAsCurrentUser('indices.putTemplate', { - name: template.name, - order, - body: { - index_patterns, - version, - settings, - mappings, - aliases, - }, - }); + const response = await saveTemplate({ template, callAsCurrentUser, isLegacy }); return res.ok({ body: response }); } catch (e) { diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts index ae5f7802a8408..1d8645268dc25 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts @@ -6,9 +6,10 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { + deserializeTemplate, + deserializeTemplateList, deserializeLegacyTemplate, deserializeLegacyTemplateList, - deserializeTemplateList, } from '../../../../common/lib'; import { getManagedTemplatePrefix } from '../../../lib/get_managed_templates'; import { RouteDependencies } from '../../../types'; @@ -18,20 +19,19 @@ export function registerGetAllRoute({ router, license }: RouteDependencies) { router.get( { path: addBasePath('/index_templates'), validate: false }, license.guardApiRoute(async (ctx, req, res) => { - const { callAsCurrentUser } = ctx.core.elasticsearch.legacy.client; + const { callAsCurrentUser } = ctx.dataManagement!.client; const managedTemplatePrefix = await getManagedTemplatePrefix(callAsCurrentUser); - const _legacyTemplates = await callAsCurrentUser('indices.getTemplate'); - const { index_templates: _templates } = await callAsCurrentUser('transport.request', { - path: '_index_template', - method: 'GET', - }); + const legacyTemplatesEs = await callAsCurrentUser('indices.getTemplate'); + const { index_templates: templatesEs } = await callAsCurrentUser( + 'dataManagement.getComposableIndexTemplates' + ); const legacyTemplates = deserializeLegacyTemplateList( - _legacyTemplates, + legacyTemplatesEs, managedTemplatePrefix ); - const templates = deserializeTemplateList(_templates, managedTemplatePrefix); + const templates = deserializeTemplateList(templatesEs, managedTemplatePrefix); const body = { templates, @@ -49,7 +49,7 @@ const paramsSchema = schema.object({ // Require the template format version (V1 or V2) to be provided as Query param const querySchema = schema.object({ - legacy: schema.maybe(schema.boolean()), + legacy: schema.maybe(schema.oneOf([schema.literal('true'), schema.literal('false')])), }); export function registerGetOneRoute({ router, license, lib }: RouteDependencies) { @@ -60,25 +60,37 @@ export function registerGetOneRoute({ router, license, lib }: RouteDependencies) }, license.guardApiRoute(async (ctx, req, res) => { const { name } = req.params as TypeOf; - const { callAsCurrentUser } = ctx.core.elasticsearch.legacy.client; - - const { legacy } = req.query as TypeOf; + const { callAsCurrentUser } = ctx.dataManagement!.client; - if (!legacy) { - return res.badRequest({ body: 'Only index template version 1 can be fetched.' }); - } + const isLegacy = (req.query as TypeOf).legacy === 'true'; try { const managedTemplatePrefix = await getManagedTemplatePrefix(callAsCurrentUser); - const indexTemplateByName = await callAsCurrentUser('indices.getTemplate', { name }); - if (indexTemplateByName[name]) { - return res.ok({ - body: deserializeLegacyTemplate( - { ...indexTemplateByName[name], name }, - managedTemplatePrefix - ), - }); + if (isLegacy) { + const indexTemplateByName = await callAsCurrentUser('indices.getTemplate', { name }); + + if (indexTemplateByName[name]) { + return res.ok({ + body: deserializeLegacyTemplate( + { ...indexTemplateByName[name], name }, + managedTemplatePrefix + ), + }); + } + } else { + const { + index_templates: indexTemplates, + } = await callAsCurrentUser('dataManagement.getComposableIndexTemplate', { name }); + + if (indexTemplates.length > 0) { + return res.ok({ + body: deserializeTemplate( + { ...indexTemplates[0].index_template, name }, + managedTemplatePrefix + ), + }); + } } return res.notFound(); diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts index 7e9c3174d0591..3055321d6b594 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts @@ -6,10 +6,10 @@ import { schema } from '@kbn/config-schema'; import { TemplateDeserialized } from '../../../../common'; -import { serializeLegacyTemplate } from '../../../../common/lib'; import { RouteDependencies } from '../../../types'; import { addBasePath } from '../index'; import { templateSchema } from './validate_schemas'; +import { saveTemplate, doesTemplateExist } from './lib'; const bodySchema = templateSchema; const paramsSchema = schema.object({ @@ -23,23 +23,15 @@ export function registerUpdateRoute({ router, license, lib }: RouteDependencies) validate: { body: bodySchema, params: paramsSchema }, }, license.guardApiRoute(async (ctx, req, res) => { - const { callAsCurrentUser } = ctx.core.elasticsearch.legacy.client; + const { callAsCurrentUser } = ctx.dataManagement!.client; const { name } = req.params as typeof paramsSchema.type; const template = req.body as TemplateDeserialized; const { _kbnMeta: { isLegacy }, } = template; - if (!isLegacy) { - return res.badRequest({ body: 'Only legacy index template can be edited.' }); - } - - const serializedTemplate = serializeLegacyTemplate(template); - - const { order, index_patterns, version, settings, mappings, aliases } = serializedTemplate; - // Verify the template exists (ES will throw 404 if not) - const doesExist = await callAsCurrentUser('indices.existsTemplate', { name }); + const doesExist = await doesTemplateExist({ name, callAsCurrentUser, isLegacy }); if (!doesExist) { return res.notFound(); @@ -47,17 +39,7 @@ export function registerUpdateRoute({ router, license, lib }: RouteDependencies) try { // Next, update index template - const response = await callAsCurrentUser('indices.putTemplate', { - name, - order, - body: { - index_patterns, - version, - settings, - mappings, - aliases, - }, - }); + const response = await saveTemplate({ template, callAsCurrentUser, isLegacy }); return res.ok({ body: response }); } catch (e) { diff --git a/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts b/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts index 6ab28e9021123..f82ea8f3cf152 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/validate_schemas.ts @@ -11,6 +11,7 @@ export const templateSchema = schema.object({ indexPatterns: schema.arrayOf(schema.string()), version: schema.maybe(schema.number()), order: schema.maybe(schema.number()), + priority: schema.maybe(schema.number()), template: schema.maybe( schema.object({ settings: schema.maybe(schema.object({}, { unknowns: 'allow' })), @@ -18,6 +19,8 @@ export const templateSchema = schema.object({ mappings: schema.maybe(schema.object({}, { unknowns: 'allow' })), }) ), + composedOf: schema.maybe(schema.arrayOf(schema.string())), + _meta: schema.maybe(schema.object({}, { unknowns: 'allow' })), ilmPolicy: schema.maybe( schema.object({ name: schema.maybe(schema.string()), diff --git a/x-pack/test/api_integration/apis/management/index_management/templates.helpers.js b/x-pack/test/api_integration/apis/management/index_management/templates.helpers.js index 292aabad85054..a563b956df344 100644 --- a/x-pack/test/api_integration/apis/management/index_management/templates.helpers.js +++ b/x-pack/test/api_integration/apis/management/index_management/templates.helpers.js @@ -7,50 +7,63 @@ import { API_BASE_PATH, INDEX_PATTERNS } from './constants'; export const registerHelpers = ({ supertest }) => { + let templatesCreated = []; + const getAllTemplates = () => supertest.get(`${API_BASE_PATH}/index_templates`); - const getOneTemplate = (name, isLegacy = true) => + const getOneTemplate = (name, isLegacy = false) => supertest.get(`${API_BASE_PATH}/index_templates/${name}?legacy=${isLegacy}`); - const getTemplatePayload = (name, isLegacy = true) => ({ - name, - order: 1, - indexPatterns: INDEX_PATTERNS, - version: 1, - template: { - settings: { - number_of_shards: 1, - index: { - lifecycle: { - name: 'my_policy', + const getTemplatePayload = (name, indexPatterns = INDEX_PATTERNS, isLegacy = false) => { + const baseTemplate = { + name, + indexPatterns, + version: 1, + template: { + settings: { + number_of_shards: 1, + index: { + lifecycle: { + name: 'my_policy', + }, }, }, - }, - mappings: { - _source: { - enabled: false, - }, - properties: { - host_name: { - type: 'keyword', + mappings: { + _source: { + enabled: false, }, - created_at: { - type: 'date', - format: 'EEE MMM dd HH:mm:ss Z yyyy', + properties: { + host_name: { + type: 'keyword', + }, + created_at: { + type: 'date', + format: 'EEE MMM dd HH:mm:ss Z yyyy', + }, }, }, + aliases: { + alias1: {}, + }, }, - aliases: { - alias1: {}, + _kbnMeta: { + isLegacy, }, - }, - _kbnMeta: { - isLegacy, - }, - }); + }; + + if (isLegacy) { + baseTemplate.order = 1; + } else { + baseTemplate.priority = 1; + } - const createTemplate = (payload) => - supertest.post(`${API_BASE_PATH}/index_templates`).set('kbn-xsrf', 'xxx').send(payload); + return baseTemplate; + }; + + const createTemplate = (template) => { + templatesCreated.push({ name: template.name, isLegacy: template._kbnMeta.isLegacy }); + return supertest.post(`${API_BASE_PATH}/index_templates`).set('kbn-xsrf', 'xxx').send(template); + }; const deleteTemplates = (templates) => supertest @@ -64,6 +77,16 @@ export const registerHelpers = ({ supertest }) => { .set('kbn-xsrf', 'xxx') .send(payload); + // Delete all templates created during tests + const cleanUpTemplates = async () => { + try { + await deleteTemplates(templatesCreated); + templatesCreated = []; + } catch (e) { + // Silently swallow errors + } + }; + return { getAllTemplates, getOneTemplate, @@ -71,5 +94,6 @@ export const registerHelpers = ({ supertest }) => { createTemplate, updateTemplate, deleteTemplates, + cleanUpTemplates, }; }; diff --git a/x-pack/test/api_integration/apis/management/index_management/templates.js b/x-pack/test/api_integration/apis/management/index_management/templates.js index fcee8ed6a183f..3a3d73ab68412 100644 --- a/x-pack/test/api_integration/apis/management/index_management/templates.js +++ b/x-pack/test/api_integration/apis/management/index_management/templates.js @@ -22,33 +22,78 @@ export default function ({ getService }) { getTemplatePayload, deleteTemplates, updateTemplate, + cleanUpTemplates, } = registerHelpers({ supertest }); describe('index templates', () => { - after(() => Promise.all([cleanUpEsResources()])); + after(() => Promise.all([cleanUpEsResources(), cleanUpTemplates()])); describe('get all', () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const indexTemplate = getTemplatePayload(templateName, [getRandomString()]); + const legacyTemplate = getTemplatePayload(templateName, [getRandomString()], true); beforeEach(async () => { - await createTemplate(payload).expect(200); + const res1 = await createTemplate(indexTemplate); + if (res1.status !== 200) { + throw new Error(res1.body.message); + } + + const res2 = await createTemplate(legacyTemplate); + if (res2.status !== 200) { + throw new Error(res2.body.message); + } }); - // TODO: When the "Create" API handler is added for V2 template, - // update this test to list composable templates. it('should list all the index templates with the expected parameters', async () => { const { body: allTemplates } = await getAllTemplates().expect(200); - // Composable index templates may have been created by other apps, e.g. Ingest Manager, - // so we don't make any assertion about these contents. - expect(allTemplates.templates).to.be.an('array'); - - // Legacy templates - const legacyTemplate = allTemplates.legacyTemplates.find( - (template) => template.name === payload.name + // Index templates (composable) + const indexTemplateFound = allTemplates.templates.find( + (template) => template.name === indexTemplate.name ); + + if (!indexTemplateFound) { + throw new Error( + `Index template "${indexTemplate.name}" not found in ${JSON.stringify( + allTemplates.templates, + null, + 2 + )}` + ); + } + const expectedKeys = [ + 'name', + 'indexPatterns', + 'hasSettings', + 'hasAliases', + 'hasMappings', + 'ilmPolicy', + 'priority', + 'composedOf', + 'version', + '_kbnMeta', + ].sort(); + + expect(Object.keys(indexTemplateFound).sort()).to.eql(expectedKeys); + + // Legacy index templates + const legacyTemplateFound = allTemplates.legacyTemplates.find( + (template) => template.name === legacyTemplate.name + ); + + if (!legacyTemplateFound) { + throw new Error( + `Legacy template "${legacyTemplate.name}" not found in ${JSON.stringify( + allTemplates.legacyTemplates, + null, + 2 + )}` + ); + } + + const expectedLegacyKeys = [ 'name', 'indexPatterns', 'hasSettings', @@ -60,20 +105,40 @@ export default function ({ getService }) { '_kbnMeta', ].sort(); - expect(Object.keys(legacyTemplate).sort()).to.eql(expectedKeys); + expect(Object.keys(legacyTemplateFound).sort()).to.eql(expectedLegacyKeys); }); }); describe('get one', () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); - beforeEach(async () => { - await createTemplate(payload).expect(200); - }); + it('should return an index template with the expected parameters', async () => { + const template = getTemplatePayload(templateName, [getRandomString()]); + await createTemplate(template).expect(200); - it('should return the index template with the expected parameters', async () => { const { body } = await getOneTemplate(templateName).expect(200); + const expectedKeys = [ + 'name', + 'indexPatterns', + 'template', + 'composedOf', + 'ilmPolicy', + 'priority', + 'version', + '_kbnMeta', + ].sort(); + const expectedTemplateKeys = ['aliases', 'mappings', 'settings'].sort(); + + expect(body.name).to.equal(templateName); + expect(Object.keys(body).sort()).to.eql(expectedKeys); + expect(Object.keys(body.template).sort()).to.eql(expectedTemplateKeys); + }); + + it('should return a legacy index template with the expected parameters', async () => { + const legacyTemplate = getTemplatePayload(templateName, [getRandomString()], true); + await createTemplate(legacyTemplate).expect(200); + + const { body } = await getOneTemplate(templateName, true).expect(200); const expectedKeys = [ 'name', 'indexPatterns', @@ -94,14 +159,21 @@ export default function ({ getService }) { describe('create', () => { it('should create an index template', async () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const payload = getTemplatePayload(templateName, [getRandomString()]); + + await createTemplate(payload).expect(200); + }); + + it('should create a legacy index template', async () => { + const templateName = `template-${getRandomString()}`; + const payload = getTemplatePayload(templateName, [getRandomString()], true); await createTemplate(payload).expect(200); }); it('should throw a 409 conflict when trying to create 2 templates with the same name', async () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const payload = getTemplatePayload(templateName, [getRandomString()], true); await createTemplate(payload); @@ -110,7 +182,7 @@ export default function ({ getService }) { it('should validate the request payload', async () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const payload = getTemplatePayload(templateName, [getRandomString()], true); delete payload.indexPatterns; // index patterns are required @@ -124,13 +196,40 @@ export default function ({ getService }) { describe('update', () => { it('should update an index template', async () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const indexTemplate = getTemplatePayload(templateName, [getRandomString()]); - await createTemplate(payload).expect(200); + await createTemplate(indexTemplate).expect(200); + + let catTemplateResponse = await catTemplate(templateName); + + const { name, version } = indexTemplate; + + expect( + catTemplateResponse.find(({ name: templateName }) => templateName === name).version + ).to.equal(version.toString()); + + // Update template with new version + const updatedVersion = 2; + await updateTemplate({ ...indexTemplate, version: updatedVersion }, templateName).expect( + 200 + ); + + catTemplateResponse = await catTemplate(templateName); + + expect( + catTemplateResponse.find(({ name: templateName }) => templateName === name).version + ).to.equal(updatedVersion.toString()); + }); + + it('should update a legacy index template', async () => { + const templateName = `template-${getRandomString()}`; + const legacyIndexTemplate = getTemplatePayload(templateName, [getRandomString()], true); + + await createTemplate(legacyIndexTemplate).expect(200); let catTemplateResponse = await catTemplate(templateName); - const { name, version } = payload; + const { name, version } = legacyIndexTemplate; expect( catTemplateResponse.find(({ name: templateName }) => templateName === name).version @@ -138,7 +237,10 @@ export default function ({ getService }) { // Update template with new version const updatedVersion = 2; - await updateTemplate({ ...payload, version: updatedVersion }, templateName).expect(200); + await updateTemplate( + { ...legacyIndexTemplate, version: updatedVersion }, + templateName + ).expect(200); catTemplateResponse = await catTemplate(templateName); @@ -151,7 +253,7 @@ export default function ({ getService }) { describe('delete', () => { it('should delete an index template', async () => { const templateName = `template-${getRandomString()}`; - const payload = getTemplatePayload(templateName); + const payload = getTemplatePayload(templateName, [getRandomString()], true); await createTemplate(payload).expect(200); diff --git a/x-pack/test_utils/router_helpers.tsx b/x-pack/test_utils/router_helpers.tsx index 76c1e2259545b..f2099e1eb7c91 100644 --- a/x-pack/test_utils/router_helpers.tsx +++ b/x-pack/test_utils/router_helpers.tsx @@ -16,9 +16,10 @@ export const WithMemoryRouter = (initialEntries: string[] = ['/'], initialIndex: ); -export const WithRoute = (componentRoutePath = '/', onRouter = (router: any) => {}) => ( - WrappedComponent: ComponentType -) => { +export const WithRoute = ( + componentRoutePath: string | string[] = '/', + onRouter = (router: any) => {} +) => (WrappedComponent: ComponentType) => { // Create a class component that will catch the router // and forward it to our "onRouter()" handler. const CatchRouter = withRouter( diff --git a/x-pack/test_utils/testbed/types.ts b/x-pack/test_utils/testbed/types.ts index 4975e073eea1f..e2b6693ce77aa 100644 --- a/x-pack/test_utils/testbed/types.ts +++ b/x-pack/test_utils/testbed/types.ts @@ -163,7 +163,7 @@ export interface MemoryRouterConfig { /** The React Router **initial index** setting ([see documentation](https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/MemoryRouter.md)) */ initialIndex?: number; /** The route **path** for the mounted component (defaults to `"/"`) */ - componentRoutePath?: string; + componentRoutePath?: string | string[]; /** A callBack that will be called with the React Router instance once mounted */ onRouter?: (router: any) => void; } From d1e6aa720637c4abe7498fec56b02891e316b412 Mon Sep 17 00:00:00 2001 From: Nicolas Ruflin Date: Fri, 3 Jul 2020 12:27:33 +0200 Subject: [PATCH 27/59] [Ingest Manager] Update registry URL to point to snapshot registry (#70687) With https://github.com/elastic/package-storage/issues/86 we have now 3 registries available: production, staging, snapshot. Our current master snapshot build should point to the snapshot registry. The 7.x and 7.8 branch both should point to the production registry. It means, if someone runs the master snapshot builds, he always has the most recent packages available. This also ensures, we don't accidentally ship with the production registry. The only time we need to be careful, is when we will branch of 8.x from master. At this stage, we need to switch over the registry in 8.x to prod again. The registry URL used is: https://epr-snapshot.ea-web.elastic.dev The reasons is that the CDN URL is not deployed yet. As soon as the CDN is available, we should switch it over to : https://epr-snapshot.elastic.co The reason I'm already switching over is to make sure we can use the snapshot branch as soon as possible. --- x-pack/plugins/ingest_manager/common/constants/epm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/ingest_manager/common/constants/epm.ts b/x-pack/plugins/ingest_manager/common/constants/epm.ts index 97b5cca369298..3d3c91a4310f8 100644 --- a/x-pack/plugins/ingest_manager/common/constants/epm.ts +++ b/x-pack/plugins/ingest_manager/common/constants/epm.ts @@ -6,5 +6,5 @@ export const PACKAGES_SAVED_OBJECT_TYPE = 'epm-packages'; export const INDEX_PATTERN_SAVED_OBJECT_TYPE = 'index-pattern'; -export const DEFAULT_REGISTRY_URL = 'https://epr.elastic.co'; +export const DEFAULT_REGISTRY_URL = 'https://epr-snapshot.ea-web.elastic.dev'; export const INDEX_PATTERN_PLACEHOLDER_SUFFIX = '-index_pattern_placeholder'; From fa2f60e57bfb0086a1aa57c7c9e3096e6db22c6c Mon Sep 17 00:00:00 2001 From: Shahzad Date: Fri, 3 Jul 2020 12:58:42 +0200 Subject: [PATCH 28/59] [Uptime] Use elastic charts donut (#70364) Co-authored-by: Elastic Machine --- .../__snapshots__/chart_wrapper.test.tsx.snap | 2 - .../__snapshots__/donut_chart.test.tsx.snap | 412 +++++++++++++++++- .../charts/__tests__/chart_wrapper.test.tsx | 9 +- .../components/common/charts/donut_chart.tsx | 97 ++--- .../common/charts/donut_chart_legend.tsx | 2 +- .../__snapshots__/snapshot.test.tsx.snap | 1 - .../components/overview/snapshot/snapshot.tsx | 8 +- 7 files changed, 442 insertions(+), 89 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/common/charts/__tests__/__snapshots__/chart_wrapper.test.tsx.snap b/x-pack/plugins/uptime/public/components/common/charts/__tests__/__snapshots__/chart_wrapper.test.tsx.snap index 71690432fd01b..d8235765bda2d 100644 --- a/x-pack/plugins/uptime/public/components/common/charts/__tests__/__snapshots__/chart_wrapper.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/common/charts/__tests__/__snapshots__/chart_wrapper.test.tsx.snap @@ -123,7 +123,6 @@ exports[`ChartWrapper component renders the component with loading false 1`] = ` down={8} height={144} up={4} - width={144} />
@@ -252,7 +251,6 @@ exports[`ChartWrapper component renders the component with loading true 1`] = ` down={8} height={144} up={4} - width={144} /> - + baseTheme={ + Object { + "arcSeriesStyle": Object { + "arc": Object { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "visible": true, + }, + }, + "areaSeriesStyle": Object { + "area": Object { + "opacity": 0.3, + "visible": true, + }, + "line": Object { + "opacity": 1, + "strokeWidth": 1, + "visible": true, + }, + "point": Object { + "fill": "white", + "opacity": 1, + "radius": 2, + "strokeWidth": 1, + "visible": false, + }, + }, + "axes": Object { + "axisLineStyle": Object { + "stroke": "#eaeaea", + "strokeWidth": 1, + }, + "axisTitleStyle": Object { + "fill": "#333", + "fontFamily": "sans-serif", + "fontSize": 12, + "fontStyle": "bold", + "padding": 8, + }, + "gridLineStyle": Object { + "horizontal": Object { + "dash": Array [ + 0, + 0, + ], + "opacity": 1, + "stroke": "#D3DAE6", + "strokeWidth": 1, + "visible": true, + }, + "vertical": Object { + "dash": Array [ + 0, + 0, + ], + "opacity": 1, + "stroke": "#D3DAE6", + "strokeWidth": 1, + "visible": true, + }, + }, + "tickLabelStyle": Object { + "fill": "#777", + "fontFamily": "sans-serif", + "fontSize": 10, + "fontStyle": "normal", + "padding": 4, + }, + "tickLineStyle": Object { + "stroke": "#eaeaea", + "strokeWidth": 1, + "visible": true, + }, + }, + "background": Object { + "color": "transparent", + }, + "barSeriesStyle": Object { + "displayValue": Object { + "fill": "#777", + "fontFamily": "sans-serif", + "fontSize": 8, + "fontStyle": "normal", + "offsetX": 0, + "offsetY": 0, + "padding": 0, + }, + "rect": Object { + "opacity": 1, + }, + "rectBorder": Object { + "strokeWidth": 0, + "visible": false, + }, + }, + "bubbleSeriesStyle": Object { + "point": Object { + "fill": "white", + "opacity": 1, + "radius": 2, + "strokeWidth": 1, + "visible": true, + }, + }, + "chartMargins": Object { + "bottom": 10, + "left": 10, + "right": 10, + "top": 10, + }, + "chartPaddings": Object { + "bottom": 0, + "left": 0, + "right": 0, + "top": 0, + }, + "colors": Object { + "defaultVizColor": "red", + "vizColors": Array [ + "#1EA593", + "#2B70F7", + "#CE0060", + "#38007E", + "#FCA5D3", + "#F37020", + "#E49E29", + "#B0916F", + "#7B000B", + "#34130C", + ], + }, + "crosshair": Object { + "band": Object { + "fill": "#F5F5F5", + "visible": true, + }, + "line": Object { + "dash": Array [ + 5, + 5, + ], + "stroke": "#777", + "strokeWidth": 1, + "visible": true, + }, + }, + "legend": Object { + "horizontalHeight": 64, + "spacingBuffer": 10, + "verticalWidth": 200, + }, + "lineSeriesStyle": Object { + "line": Object { + "opacity": 1, + "strokeWidth": 1, + "visible": true, + }, + "point": Object { + "fill": "white", + "opacity": 1, + "radius": 2, + "strokeWidth": 1, + "visible": true, + }, + }, + "scales": Object { + "barsPadding": 0.25, + "histogramPadding": 0.05, + }, + "sharedStyle": Object { + "default": Object { + "opacity": 1, + }, + "highlighted": Object { + "opacity": 1, + }, + "unhighlighted": Object { + "opacity": 0.25, + }, + }, + } + } + renderer="canvas" + size={125} + theme={ + Object { + "areaSeriesStyle": Object { + "area": Object { + "opacity": 0.3, + }, + "line": Object { + "strokeWidth": 2, + }, + "point": Object { + "fill": "rgba(255, 255, 255, 1)", + "radius": 3, + "strokeWidth": 2, + "visible": false, + }, + }, + "axes": Object { + "axisLineStyle": Object { + "stroke": "rgba(238, 240, 243, 1)", + }, + "axisTitleStyle": Object { + "fill": "rgba(52, 55, 65, 1)", + "fontFamily": "'Inter UI', -apple-system, BlinkMacSystemFont, + 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'", + "fontSize": 12, + "padding": 10, + }, + "gridLineStyle": Object { + "horizontal": Object { + "dash": Array [ + 0, + 0, + ], + "opacity": 1, + "stroke": "rgba(238, 240, 243, 1)", + "strokeWidth": 1, + "visible": true, + }, + "vertical": Object { + "dash": Array [ + 4, + 4, + ], + "opacity": 1, + "stroke": "rgba(238, 240, 243, 1)", + "strokeWidth": 1, + "visible": true, + }, + }, + "tickLabelStyle": Object { + "fill": "rgba(105, 112, 125, 1)", + "fontFamily": "'Inter UI', -apple-system, BlinkMacSystemFont, + 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'", + "fontSize": 10, + "padding": 8, + }, + "tickLineStyle": Object { + "stroke": "rgba(238, 240, 243, 1)", + "strokeWidth": 1, + "visible": false, + }, + }, + "barSeriesStyle": Object { + "displayValue": Object { + "fill": "rgba(105, 112, 125, 1)", + "fontFamily": "'Inter UI', -apple-system, BlinkMacSystemFont, + 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'", + "fontSize": 8, + }, + }, + "chartMargins": Object { + "bottom": 0, + "left": 0, + "right": 0, + "top": 0, + }, + "colors": Object { + "defaultVizColor": "#6092C0", + "vizColors": Array [ + "#54B399", + "#6092C0", + "#9170B8", + "#CA8EAE", + "#D36086", + "#E7664C", + "#AA6556", + "#DA8B45", + "#B9A888", + "#D6BF57", + ], + }, + "crosshair": Object { + "band": Object { + "fill": "rgba(245, 247, 250, 1)", + }, + "line": Object { + "dash": Array [ + 4, + 4, + ], + "stroke": "rgba(105, 112, 125, 1)", + "strokeWidth": 1, + }, + }, + "lineSeriesStyle": Object { + "line": Object { + "strokeWidth": 2, + }, + "point": Object { + "fill": "rgba(255, 255, 255, 1)", + "radius": 3, + "strokeWidth": 2, + }, + }, + "scales": Object { + "barsPadding": 0.25, + "histogramPadding": 0.05, + }, + } + } + > + + + - +
+
+
+
+
+
- +
+
+
+
+
+
{ it('renders the component with loading false', () => { @@ -20,7 +19,7 @@ describe('ChartWrapper component', () => { - + ); expect(component).toMatchSnapshot(); @@ -31,7 +30,7 @@ describe('ChartWrapper component', () => { - + ); expect(component).toMatchSnapshot(); @@ -42,7 +41,7 @@ describe('ChartWrapper component', () => { - + ); @@ -64,7 +63,7 @@ describe('ChartWrapper component', () => { - + ); diff --git a/x-pack/plugins/uptime/public/components/common/charts/donut_chart.tsx b/x-pack/plugins/uptime/public/components/common/charts/donut_chart.tsx index b4d6864423dfc..19716f0d3b1c9 100644 --- a/x-pack/plugins/uptime/public/components/common/charts/donut_chart.tsx +++ b/x-pack/plugins/uptime/public/components/common/charts/donut_chart.tsx @@ -5,10 +5,10 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiIcon } from '@elastic/eui'; -import React, { useContext, useEffect, useRef } from 'react'; -import * as d3 from 'd3'; +import React, { useContext } from 'react'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; +import { Chart, Datum, Partition, Settings, PartitionLayout } from '@elastic/charts'; import { DonutChartLegend } from './donut_chart_legend'; import { UptimeThemeContext } from '../../../contexts'; @@ -16,7 +16,6 @@ interface DonutChartProps { down: number; height: number; up: number; - width: number; } export const GreenCheckIcon = styled(EuiIcon)` @@ -28,72 +27,56 @@ export const GreenCheckIcon = styled(EuiIcon)` position: absolute; `; -export const DonutChart = ({ height, down, up, width }: DonutChartProps) => { - const chartElement = useRef(null); - +export const DonutChart = ({ height, down, up }: DonutChartProps) => { const { colors: { danger, gray }, + chartTheme, } = useContext(UptimeThemeContext); - let upCount = up; - if (up === 0 && down === 0) { - upCount = 1; - } - useEffect(() => { - if (chartElement.current !== null) { - // we must remove any existing paths before painting - d3.select(chartElement.current).selectAll('g').remove(); - - const svgElement = d3 - .select(chartElement.current) - .append('g') - .attr('transform', `translate(${width / 2}, ${height / 2})`); - - const color = d3.scale.ordinal().domain(['up', 'down']).range([gray, danger]); - - const pieGenerator = d3.layout - .pie() - .value(({ value }: any) => value) - // these start/end angles will reverse the direction of the pie, - // which matches our design - .startAngle(2 * Math.PI) - .endAngle(0); - - svgElement - .selectAll('g') - .data( - // @ts-ignore pie generator expects param of type number[], but only works with - // output of d3.entries, which is like Array<{ key: string, value: number }> - pieGenerator(d3.entries({ up: upCount, down })) - ) - .enter() - .append('path') - .attr( - 'd', - // @ts-ignore attr does not expect a param of type Arc but it behaves as desired - d3.svg - .arc() - .innerRadius(width * 0.28) - .outerRadius(Math.min(width, height) / 2 - 10) - ) - .attr('fill', (d: any) => color(d.data.key) as any); - } - }, [danger, down, gray, height, upCount, width]); - return ( - - {/* When all monitors are up we show green check icon in middle of donut to indicate, all is well */} + {...chartTheme} + > + + d.value as number} + layers={[ + { + groupByRollup: (d: Datum) => d.label, + nodeLabel: (d: Datum) => d, + shape: { + fillColor: (d: Datum) => { + return d.dataName === 'Down' ? danger : gray; + }, + }, + }, + ]} + config={{ + partitionLayout: PartitionLayout.sunburst, + linkLabel: { + maximumSection: Infinity, + }, + margin: { top: 0, bottom: 0, left: 0, right: 0 }, + idealFontSizeJump: 1.1, + outerSizeRatio: 0.9, + emptySizeRatio: 0.4, + circlePadding: 4, + }} + /> + {down === 0 && } diff --git a/x-pack/plugins/uptime/public/components/common/charts/donut_chart_legend.tsx b/x-pack/plugins/uptime/public/components/common/charts/donut_chart_legend.tsx index a514013eeed98..cbbffdff745f8 100644 --- a/x-pack/plugins/uptime/public/components/common/charts/donut_chart_legend.tsx +++ b/x-pack/plugins/uptime/public/components/common/charts/donut_chart_legend.tsx @@ -12,7 +12,7 @@ import { DonutChartLegendRow } from './donut_chart_legend_row'; import { UptimeThemeContext } from '../../../contexts'; const LegendContainer = styled.div` - max-width: 260px; + max-width: 150px; min-width: 100px; @media (max-width: 767px) { min-width: 0px; diff --git a/x-pack/plugins/uptime/public/components/overview/__tests__/__snapshots__/snapshot.test.tsx.snap b/x-pack/plugins/uptime/public/components/overview/__tests__/__snapshots__/snapshot.test.tsx.snap index db41dfb0b04c4..2135fc32c2b5b 100644 --- a/x-pack/plugins/uptime/public/components/overview/__tests__/__snapshots__/snapshot.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/overview/__tests__/__snapshots__/snapshot.test.tsx.snap @@ -14,7 +14,6 @@ exports[`Snapshot component renders without errors 1`] = ` down={2} height={144} up={8} - width={144} /> `; diff --git a/x-pack/plugins/uptime/public/components/overview/snapshot/snapshot.tsx b/x-pack/plugins/uptime/public/components/overview/snapshot/snapshot.tsx index 8d6933ad18ced..bc54f14e87822 100644 --- a/x-pack/plugins/uptime/public/components/overview/snapshot/snapshot.tsx +++ b/x-pack/plugins/uptime/public/components/overview/snapshot/snapshot.tsx @@ -11,7 +11,6 @@ import { ChartWrapper } from '../../common/charts/chart_wrapper'; import { SnapshotHeading } from './snapshot_heading'; import { Snapshot as SnapshotType } from '../../../../common/runtime_types'; -const SNAPSHOT_CHART_WIDTH = 144; const SNAPSHOT_CHART_HEIGHT = 144; interface SnapshotComponentProps { @@ -29,11 +28,6 @@ export const SnapshotComponent: React.FC = ({ count, hei - + ); From a916e0a7c29c61f30d7d42b5f990e9d5b1a0cfbe Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Fri, 3 Jul 2020 13:22:47 +0200 Subject: [PATCH 29/59] [Lens] Add ability to set colors for y-axis series (#70311) --- .../__snapshots__/xy_expression.test.tsx.snap | 14 ++ .../public/xy_visualization/state_helpers.ts | 11 +- .../public/xy_visualization/to_expression.ts | 3 +- .../lens/public/xy_visualization/types.ts | 5 + .../xy_visualization/xy_config_panel.tsx | 230 +++++++++++++----- .../xy_visualization/xy_expression.test.tsx | 69 ++++++ .../public/xy_visualization/xy_expression.tsx | 3 +- 7 files changed, 275 insertions(+), 60 deletions(-) diff --git a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap index 8cb30037379da..6e87e47a5cf9f 100644 --- a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap +++ b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap @@ -36,6 +36,7 @@ exports[`xy_expression XYChart component it renders area 1`] = ` title="a" /> { + if (layer.splitAccessor) { + return null; + } + return ( + layer?.yConfig?.find((yConfig: YConfig) => yConfig.forAccessor === accessor)?.color || null + ); +}; diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts index 6ec22270d8b18..b5b796dc019de 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts @@ -188,7 +188,8 @@ export const buildExpression = ( function: 'lens_xy_yConfig', arguments: { forAccessor: [yConfig.forAccessor], - axisMode: [yConfig.axisMode], + axisMode: yConfig.axisMode ? [yConfig.axisMode] : [], + color: yConfig.color ? [yConfig.color] : [], }, }, ], diff --git a/x-pack/plugins/lens/public/xy_visualization/types.ts b/x-pack/plugins/lens/public/xy_visualization/types.ts index e62c5f60a58e1..8ea9683ca042c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/types.ts +++ b/x-pack/plugins/lens/public/xy_visualization/types.ts @@ -100,6 +100,10 @@ export const yAxisConfig: ExpressionFunctionDefinition< options: ['auto', 'left', 'right'], help: 'The axis mode of the metric', }, + color: { + types: ['string'], + help: 'The color of the series', + }, }, fn: function fn(input: unknown, args: YConfig) { return { @@ -195,6 +199,7 @@ export type YAxisMode = 'auto' | 'left' | 'right'; export interface YConfig { forAccessor: string; axisMode?: YAxisMode; + color?: string; } export interface LayerConfig { diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx index 3e73cd256bdbf..e6c284f09ab4e 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx @@ -4,12 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { useState } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; +import { debounce } from 'lodash'; +import { + EuiButtonGroup, + EuiFormRow, + htmlIdGenerator, + EuiForm, + EuiColorPicker, + EuiColorPickerProps, + EuiToolTip, + EuiIcon, +} from '@elastic/eui'; import { State, SeriesType, visualizationTypes, YAxisMode } from './types'; import { VisualizationDimensionEditorProps, VisualizationLayerWidgetProps } from '../types'; -import { isHorizontalChart, isHorizontalSeries } from './state_helpers'; +import { isHorizontalChart, isHorizontalSeries, getSeriesColor } from './state_helpers'; import { trackUiEvent } from '../lens_ui_telemetry'; type UnwrapArray = T extends Array ? P : T; @@ -70,70 +80,176 @@ export function LayerContextMenu(props: VisualizationLayerWidgetProps) { const idPrefix = htmlIdGenerator()(); -export function DimensionEditor({ - state, - setState, - layerId, - accessor, -}: VisualizationDimensionEditorProps) { +export function DimensionEditor(props: VisualizationDimensionEditorProps) { + const { state, setState, layerId, accessor } = props; const index = state.layers.findIndex((l) => l.layerId === layerId); const layer = state.layers[index]; const axisMode = (layer.yConfig && layer.yConfig?.find((yAxisConfig) => yAxisConfig.forAccessor === accessor)?.axisMode) || 'auto'; + return ( - - + + + { - const newMode = id.replace(idPrefix, '') as YAxisMode; - const newYAxisConfigs = [...(layer.yConfig || [])]; - const existingIndex = newYAxisConfigs.findIndex( - (yAxisConfig) => yAxisConfig.forAccessor === accessor - ); - if (existingIndex !== -1) { - newYAxisConfigs[existingIndex].axisMode = newMode; + > + { + const newMode = id.replace(idPrefix, '') as YAxisMode; + const newYAxisConfigs = [...(layer.yConfig || [])]; + const existingIndex = newYAxisConfigs.findIndex( + (yAxisConfig) => yAxisConfig.forAccessor === accessor + ); + if (existingIndex !== -1) { + newYAxisConfigs[existingIndex].axisMode = newMode; + } else { + newYAxisConfigs.push({ + forAccessor: accessor, + axisMode: newMode, + }); + } + setState(updateLayer(state, { ...layer, yConfig: newYAxisConfigs }, index)); + }} + /> + + + ); +} + +const tooltipContent = { + auto: i18n.translate('xpack.lens.configPanel.color.tooltip.auto', { + defaultMessage: 'Lens automatically picks colors for you unless you specify a custom color.', + }), + custom: i18n.translate('xpack.lens.configPanel.color.tooltip.custom', { + defaultMessage: 'Clear the custom color to return to “Auto” mode.', + }), + disabled: i18n.translate('xpack.lens.configPanel.color.tooltip.disabled', { + defaultMessage: + 'Individual series cannot be custom colored when the layer includes a “Break down by“', + }), +}; + +const ColorPicker = ({ + state, + setState, + layerId, + accessor, +}: VisualizationDimensionEditorProps) => { + const index = state.layers.findIndex((l) => l.layerId === layerId); + const layer = state.layers[index]; + const disabled = !!layer.splitAccessor; + + const [color, setColor] = useState(getSeriesColor(layer, accessor)); + + const handleColor: EuiColorPickerProps['onChange'] = (text, output) => { + setColor(text); + if (output.isValid || text === '') { + updateColorInState(text, output); + } + }; + + const updateColorInState: EuiColorPickerProps['onChange'] = React.useMemo( + () => + debounce((text, output) => { + const newYConfigs = [...(layer.yConfig || [])]; + const existingIndex = newYConfigs.findIndex((yConfig) => yConfig.forAccessor === accessor); + if (existingIndex !== -1) { + if (text === '') { + delete newYConfigs[existingIndex].color; } else { - newYAxisConfigs.push({ - forAccessor: accessor, - axisMode: newMode, - }); + newYConfigs[existingIndex].color = output.hex; } - setState(updateLayer(state, { ...layer, yConfig: newYAxisConfigs }, index)); - }} - /> + } else { + newYConfigs.push({ + forAccessor: accessor, + color: output.hex, + }); + } + setState(updateLayer(state, { ...layer, yConfig: newYConfigs }, index)); + }, 256), + [state, layer, accessor, index] + ); + + return ( + + + {i18n.translate('xpack.lens.xyChart.seriesColor.label', { + defaultMessage: 'Series color', + })}{' '} + + + + } + > + {disabled ? ( + + + + ) : ( + + )} ); -} +}; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx index f433a88e3bdbd..4a532d378eaf7 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx @@ -996,6 +996,75 @@ describe('xy_expression', () => { }); }); + describe('y series coloring', () => { + test('color is applied to chart for multiple series', () => { + const args = createArgsWithLayers(); + const newArgs = { + ...args, + layers: [ + { + ...args.layers[0], + splitAccessor: undefined, + accessors: ['a', 'b'], + yConfig: [ + { + forAccessor: 'a', + color: '#550000', + }, + { + forAccessor: 'b', + color: '#FFFF00', + }, + ], + }, + { + ...args.layers[0], + splitAccessor: undefined, + accessors: ['c'], + yConfig: [ + { + forAccessor: 'c', + color: '#FEECDF', + }, + ], + }, + ], + } as XYArgs; + + const component = getRenderedComponent(dataWithoutFormats, newArgs); + expect((component.find(LineSeries).at(0).prop('color') as Function)!()).toEqual('#550000'); + expect((component.find(LineSeries).at(1).prop('color') as Function)!()).toEqual('#FFFF00'); + expect((component.find(LineSeries).at(2).prop('color') as Function)!()).toEqual('#FEECDF'); + }); + test('color is not applied to chart when splitAccessor is defined or when yConfig is not configured', () => { + const args = createArgsWithLayers(); + const newArgs = { + ...args, + layers: [ + { + ...args.layers[0], + accessors: ['a'], + yConfig: [ + { + forAccessor: 'a', + color: '#550000', + }, + ], + }, + { + ...args.layers[0], + splitAccessor: undefined, + accessors: ['c'], + }, + ], + } as XYArgs; + + const component = getRenderedComponent(dataWithoutFormats, newArgs); + expect((component.find(LineSeries).at(0).prop('color') as Function)!()).toEqual(null); + expect((component.find(LineSeries).at(1).prop('color') as Function)!()).toEqual(null); + }); + }); + describe('provides correct series naming', () => { const nameFnArgs = { seriesKeys: [], diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx index 3ff7bd7fda304..3e5fb10e080d0 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx @@ -35,7 +35,7 @@ import { } from '../types'; import { XYArgs, SeriesType, visualizationTypes } from './types'; import { VisualizationContainer } from '../visualization_container'; -import { isHorizontalChart } from './state_helpers'; +import { isHorizontalChart, getSeriesColor } from './state_helpers'; import { parseInterval } from '../../../../../src/plugins/data/common'; import { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; import { EmptyPlaceholder } from '../shared_components'; @@ -433,6 +433,7 @@ export function XYChart({ data: rows, xScaleType, yScaleType, + color: () => getSeriesColor(layer, accessor), groupId: yAxesConfiguration.find((axisConfiguration) => axisConfiguration.series.find((currentSeries) => currentSeries.accessor === accessor) )?.groupId, From 571a610c7e8244c0c911d7174311eb534a3200b3 Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Fri, 3 Jul 2020 07:41:52 -0400 Subject: [PATCH 30/59] Handle timeouts on creating templates (#70635) Co-authored-by: Elastic Machine --- .../workpad_templates/workpad_templates.tsx | 4 ++-- .../plugins/canvas/server/templates/index.ts | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx b/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx index 43d5d5f939ce0..701016d6bf0af 100644 --- a/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx +++ b/x-pack/plugins/canvas/public/components/workpad_templates/workpad_templates.tsx @@ -24,7 +24,7 @@ import { EuiBasicTableColumn } from '@elastic/eui'; import { Paginate, PaginateChildProps } from '../paginate'; import { TagList } from '../tag_list'; import { getTagsFilter } from '../../lib/get_tags_filter'; -// @ts-ignore untyped local +// @ts-expect-error import { extractSearch } from '../../lib/extract_search'; import { ComponentStrings } from '../../../i18n'; import { CanvasTemplate } from '../../../types'; @@ -61,7 +61,7 @@ export class WorkpadTemplates extends React.PureComponent< WorkpadTemplatesState > { static propTypes = { - createFromTemplate: PropTypes.func.isRequired, + onCreateFromTemplate: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, templates: PropTypes.object, }; diff --git a/x-pack/plugins/canvas/server/templates/index.ts b/x-pack/plugins/canvas/server/templates/index.ts index bd0abed1912c3..c2723fbc87e17 100644 --- a/x-pack/plugins/canvas/server/templates/index.ts +++ b/x-pack/plugins/canvas/server/templates/index.ts @@ -13,20 +13,21 @@ import { light } from './theme_light'; import { TEMPLATE_TYPE } from '../../common/lib/constants'; -export const templates = [pitch, status, summary, dark, light]; +export const templates = [status, summary, dark, light, pitch]; export async function initializeTemplates( - client: Pick + client: Pick ) { const existingTemplates = await client.find({ type: TEMPLATE_TYPE, perPage: 1 }); if (existingTemplates.total === 0) { - const templateObjects = templates.map((template) => ({ - id: template.id, - type: TEMPLATE_TYPE, - attributes: template, - })); - - client.bulkCreate(templateObjects); + // Some devs were seeing timeouts that would cause an unhandled promise rejection + // likely because the pitch template is so huge. + // So, rather than doing a bulk create of templates, we're going to fire off individual + // creates and catch and throw-away any errors that happen. + // Once packages are ready, we should probably move that pitch that is so large to a package + for (const template of templates) { + client.create(TEMPLATE_TYPE, template, { id: template.id }).catch((err) => undefined); + } } } From 72b300424b3e7a01115ecf530124a9edf41d8791 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Fri, 3 Jul 2020 08:23:12 -0400 Subject: [PATCH 31/59] [Ingest Manager] Improve agent unenrollment with unenroll action (#70031) --- .../common/openapi/spec_oas3.json | 39 +++++++++++++++++- .../common/services/agent_status.ts | 3 ++ .../common/types/models/agent.ts | 10 +++-- .../sections/fleet/agent_list_page/index.tsx | 2 +- .../fleet/components/agent_health.tsx | 10 +++++ .../components/agent_unenroll_provider.tsx | 2 +- .../server/routes/agent/handlers.ts | 21 ---------- .../server/routes/agent/index.ts | 2 +- .../server/routes/agent/unenroll_handler.ts | 36 +++++++++++++++++ .../server/saved_objects/index.ts | 5 +++ .../server/services/agents/acks.ts | 7 ++++ .../server/services/agents/unenroll.ts | 15 +++++++ .../server/types/rest_spec/agent.ts | 5 +++ .../api_integration/apis/fleet/agent_flow.ts | 40 ++++++++++++++++++- .../apis/fleet/unenroll_agent.ts | 4 +- 15 files changed, 167 insertions(+), 34 deletions(-) create mode 100644 x-pack/plugins/ingest_manager/server/routes/agent/unenroll_handler.ts diff --git a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json index 9617173bd0c7b..c374cbb3bb146 100644 --- a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json +++ b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json @@ -3520,7 +3520,17 @@ ] } }, - "/fleet/agents/unenroll": { + "/fleet/agents/{agentId}/unenroll": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "agentId", + "in": "path", + "required": true + } + ], "post": { "summary": "Fleet - Agent - Unenroll", "tags": [], @@ -3530,7 +3540,26 @@ { "$ref": "#/components/parameters/xsrfHeader" } - ] + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "force": { "type": "boolean" } + } + }, + "examples": { + "example-1": { + "value": { + "force": true + } + } + } + } + } + } } }, "/fleet/config/{configId}/agent-status": { @@ -4096,6 +4125,12 @@ "enrolled_at": { "type": "string" }, + "unenrolled_at": { + "type": "string" + }, + "unenrollment_started_at": { + "type": "string" + }, "shared_id": { "type": "string" }, diff --git a/x-pack/plugins/ingest_manager/common/services/agent_status.ts b/x-pack/plugins/ingest_manager/common/services/agent_status.ts index cc1c2da710516..b1d92d3a78e65 100644 --- a/x-pack/plugins/ingest_manager/common/services/agent_status.ts +++ b/x-pack/plugins/ingest_manager/common/services/agent_status.ts @@ -21,6 +21,9 @@ export function getAgentStatus(agent: Agent, now: number = Date.now()): AgentSta if (!agent.active) { return 'inactive'; } + if (agent.unenrollment_started_at && !agent.unenrolled_at) { + return 'unenrolling'; + } if (agent.current_error_events.length > 0) { return 'error'; } diff --git a/x-pack/plugins/ingest_manager/common/types/models/agent.ts b/x-pack/plugins/ingest_manager/common/types/models/agent.ts index d2a2a3f5705ae..27f0c61685fd4 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/agent.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/agent.ts @@ -11,10 +11,10 @@ export type AgentType = | typeof AGENT_TYPE_PERMANENT | typeof AGENT_TYPE_TEMPORARY; -export type AgentStatus = 'offline' | 'error' | 'online' | 'inactive' | 'warning'; - +export type AgentStatus = 'offline' | 'error' | 'online' | 'inactive' | 'warning' | 'unenrolling'; +export type AgentActionType = 'CONFIG_CHANGE' | 'DATA_DUMP' | 'RESUME' | 'PAUSE' | 'UNENROLL'; export interface NewAgentAction { - type: 'CONFIG_CHANGE' | 'DATA_DUMP' | 'RESUME' | 'PAUSE'; + type: AgentActionType; data?: any; sent_at?: string; } @@ -26,7 +26,7 @@ export interface AgentAction extends NewAgentAction { } export interface AgentActionSOAttributes { - type: 'CONFIG_CHANGE' | 'DATA_DUMP' | 'RESUME' | 'PAUSE'; + type: AgentActionType; sent_at?: string; timestamp?: string; created_at: string; @@ -73,6 +73,8 @@ interface AgentBase { type: AgentType; active: boolean; enrolled_at: string; + unenrolled_at?: string; + unenrollment_started_at?: string; shared_id?: string; access_api_key_id?: string; default_api_key?: string; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx index 75d0556755149..6d04f63702c64 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx @@ -236,7 +236,7 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { }, { field: 'active', - width: '100px', + width: '120px', name: i18n.translate('xpack.ingestManager.agentList.statusColumnTitle', { defaultMessage: 'Status', }), diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_health.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_health.tsx index 181ebe3504222..e4dfa520259eb 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_health.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_health.tsx @@ -53,6 +53,14 @@ const Status = { /> ), + Unenrolling: ( + + + + ), }; function getStatusComponent(agent: Agent): React.ReactElement { @@ -65,6 +73,8 @@ function getStatusComponent(agent: Agent): React.ReactElement { return Status.Offline; case 'warning': return Status.Warning; + case 'unenrolling': + return Status.Unenrolling; default: return Status.Online; } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_unenroll_provider.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_unenroll_provider.tsx index fec2253c0dd56..90d8ff545341d 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_unenroll_provider.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/components/agent_unenroll_provider.tsx @@ -74,7 +74,7 @@ export const AgentUnenrollProvider: React.FunctionComponent = ({ children const successMessage = i18n.translate( 'xpack.ingestManager.unenrollAgents.successSingleNotificationTitle', { - defaultMessage: "Unenrolled agent '{id}'", + defaultMessage: "Unenrolling agent '{id}'", values: { id: agentId }, } ); diff --git a/x-pack/plugins/ingest_manager/server/routes/agent/handlers.ts b/x-pack/plugins/ingest_manager/server/routes/agent/handlers.ts index d31498599a2b6..d9a9572237126 100644 --- a/x-pack/plugins/ingest_manager/server/routes/agent/handlers.ts +++ b/x-pack/plugins/ingest_manager/server/routes/agent/handlers.ts @@ -13,7 +13,6 @@ import { GetOneAgentEventsResponse, PostAgentCheckinResponse, PostAgentEnrollResponse, - PostAgentUnenrollResponse, GetAgentStatusResponse, PutAgentReassignResponse, } from '../../../common/types'; @@ -25,7 +24,6 @@ import { GetOneAgentEventsRequestSchema, PostAgentCheckinRequestSchema, PostAgentEnrollRequestSchema, - PostAgentUnenrollRequestSchema, GetAgentStatusRequestSchema, PutAgentReassignRequestSchema, } from '../../types'; @@ -302,25 +300,6 @@ export const getAgentsHandler: RequestHandler< } }; -export const postAgentsUnenrollHandler: RequestHandler> = async (context, request, response) => { - const soClient = context.core.savedObjects.client; - try { - await AgentService.unenrollAgent(soClient, request.params.agentId); - - const body: PostAgentUnenrollResponse = { - success: true, - }; - return response.ok({ body }); - } catch (e) { - return response.customError({ - statusCode: 500, - body: { message: e.message }, - }); - } -}; - export const putAgentsReassignHandler: RequestHandler< TypeOf, undefined, diff --git a/x-pack/plugins/ingest_manager/server/routes/agent/index.ts b/x-pack/plugins/ingest_manager/server/routes/agent/index.ts index eaab46c7b455c..d7eec50eac3cf 100644 --- a/x-pack/plugins/ingest_manager/server/routes/agent/index.ts +++ b/x-pack/plugins/ingest_manager/server/routes/agent/index.ts @@ -33,7 +33,6 @@ import { getAgentEventsHandler, postAgentCheckinHandler, postAgentEnrollHandler, - postAgentsUnenrollHandler, getAgentStatusForConfigHandler, putAgentsReassignHandler, } from './handlers'; @@ -41,6 +40,7 @@ import { postAgentAcksHandlerBuilder } from './acks_handlers'; import * as AgentService from '../../services/agents'; import { postNewAgentActionHandlerBuilder } from './actions_handlers'; import { appContextService } from '../../services'; +import { postAgentsUnenrollHandler } from './unenroll_handler'; export const registerRoutes = (router: IRouter) => { // Get one diff --git a/x-pack/plugins/ingest_manager/server/routes/agent/unenroll_handler.ts b/x-pack/plugins/ingest_manager/server/routes/agent/unenroll_handler.ts new file mode 100644 index 0000000000000..d1e54fe4fb3a1 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/routes/agent/unenroll_handler.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { RequestHandler } from 'src/core/server'; +import { TypeOf } from '@kbn/config-schema'; +import { PostAgentUnenrollResponse } from '../../../common/types'; +import { PostAgentUnenrollRequestSchema } from '../../types'; +import * as AgentService from '../../services/agents'; + +export const postAgentsUnenrollHandler: RequestHandler< + TypeOf, + undefined, + TypeOf +> = async (context, request, response) => { + const soClient = context.core.savedObjects.client; + try { + if (request.body?.force === true) { + await AgentService.forceUnenrollAgent(soClient, request.params.agentId); + } else { + await AgentService.unenrollAgent(soClient, request.params.agentId); + } + + const body: PostAgentUnenrollResponse = { + success: true, + }; + return response.ok({ body }); + } catch (e) { + return response.customError({ + statusCode: 500, + body: { message: e.message }, + }); + } +}; diff --git a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts index 9819a4fa5d750..b47cf4f7e7c3b 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts @@ -54,6 +54,8 @@ const savedObjectTypes: { [key: string]: SavedObjectsType } = { type: { type: 'keyword' }, active: { type: 'boolean' }, enrolled_at: { type: 'date' }, + unenrolled_at: { type: 'date' }, + unenrollment_started_at: { type: 'date' }, access_api_key_id: { type: 'keyword' }, version: { type: 'keyword' }, user_provided_metadata: { type: 'flattened' }, @@ -313,6 +315,9 @@ export function registerEncryptedSavedObjects( 'config_newest_revision', 'updated_at', 'current_error_events', + 'unenrolled_at', + 'unenrollment_started_at', + 'packages', ]), }); encryptedSavedObjects.registerType({ diff --git a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts index c59bac6a5469a..1dfe4e067dafe 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts @@ -26,6 +26,7 @@ import { AGENT_ACTION_SAVED_OBJECT_TYPE, } from '../../constants'; import { getAgentActionByIds } from './actions'; +import { forceUnenrollAgent } from './unenroll'; const ALLOWED_ACKNOWLEDGEMENT_TYPE: string[] = ['ACTION_RESULT']; @@ -63,6 +64,12 @@ export async function acknowledgeAgentActions( if (actions.length === 0) { return []; } + + const isAgentUnenrolled = actions.some((action) => action.type === 'UNENROLL'); + if (isAgentUnenrolled) { + await forceUnenrollAgent(soClient, agent.id); + } + const config = getLatestConfigIfUpdated(agent, actions); await soClient.bulkUpdate([ diff --git a/x-pack/plugins/ingest_manager/server/services/agents/unenroll.ts b/x-pack/plugins/ingest_manager/server/services/agents/unenroll.ts index ee7e08d741035..e0ac2620cafd3 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/unenroll.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/unenroll.ts @@ -9,8 +9,21 @@ import { AgentSOAttributes } from '../../types'; import { AGENT_SAVED_OBJECT_TYPE } from '../../constants'; import { getAgent } from './crud'; import * as APIKeyService from '../api_keys'; +import { createAgentAction } from './actions'; export async function unenrollAgent(soClient: SavedObjectsClientContract, agentId: string) { + const now = new Date().toISOString(); + await createAgentAction(soClient, { + agent_id: agentId, + created_at: now, + type: 'UNENROLL', + }); + await soClient.update(AGENT_SAVED_OBJECT_TYPE, agentId, { + unenrollment_started_at: now, + }); +} + +export async function forceUnenrollAgent(soClient: SavedObjectsClientContract, agentId: string) { const agent = await getAgent(soClient, agentId); await Promise.all([ @@ -21,7 +34,9 @@ export async function unenrollAgent(soClient: SavedObjectsClientContract, agentI ? APIKeyService.invalidateAPIKey(soClient, agent.default_api_key_id) : undefined, ]); + await soClient.update(AGENT_SAVED_OBJECT_TYPE, agentId, { active: false, + unenrolled_at: new Date().toISOString(), }); } diff --git a/x-pack/plugins/ingest_manager/server/types/rest_spec/agent.ts b/x-pack/plugins/ingest_manager/server/types/rest_spec/agent.ts index 5526e889124f9..a508c33e0347b 100644 --- a/x-pack/plugins/ingest_manager/server/types/rest_spec/agent.ts +++ b/x-pack/plugins/ingest_manager/server/types/rest_spec/agent.ts @@ -70,6 +70,11 @@ export const PostAgentUnenrollRequestSchema = { params: schema.object({ agentId: schema.string(), }), + body: schema.nullable( + schema.object({ + force: schema.boolean(), + }) + ), }; export const PutAgentReassignRequestSchema = { diff --git a/x-pack/test/api_integration/apis/fleet/agent_flow.ts b/x-pack/test/api_integration/apis/fleet/agent_flow.ts index a6a4003a554fc..e14a85d6e30c1 100644 --- a/x-pack/test/api_integration/apis/fleet/agent_flow.ts +++ b/x-pack/test/api_integration/apis/fleet/agent_flow.ts @@ -90,7 +90,7 @@ export default function (providerContext: FtrProviderContext) { events: [ { type: 'ACTION_RESULT', - subtype: 'CONFIG', + subtype: 'ACKNOWLEDGED', timestamp: '2019-01-04T14:32:03.36764-05:00', action_id: configChangeAction.id, agent_id: enrollmentResponse.item.id, @@ -132,7 +132,43 @@ export default function (providerContext: FtrProviderContext) { .expect(200); expect(unenrollResponse.success).to.eql(true); - // Checkin after unenrollment + // Checkin after unenrollment + const { body: checkinAfterUnenrollResponse } = await supertestWithoutAuth + .post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/checkin`) + .set('kbn-xsrf', 'xx') + .set('Authorization', `ApiKey ${agentAccessAPIKey}`) + .send({ + events: [], + }) + .expect(200); + + expect(checkinAfterUnenrollResponse.success).to.eql(true); + expect(checkinAfterUnenrollResponse.actions).length(1); + expect(checkinAfterUnenrollResponse.actions[0].type).be('UNENROLL'); + const unenrollAction = checkinAfterUnenrollResponse.actions[0]; + + // ack unenroll actions + const { body: ackUnenrollApiResponse } = await supertestWithoutAuth + .post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/acks`) + .set('Authorization', `ApiKey ${agentAccessAPIKey}`) + .set('kbn-xsrf', 'xx') + .send({ + events: [ + { + type: 'ACTION_RESULT', + subtype: 'ACKNOWLEDGED', + timestamp: '2019-01-04T14:32:03.36764-05:00', + action_id: unenrollAction.id, + agent_id: enrollmentResponse.item.id, + message: 'hello', + payload: 'payload', + }, + ], + }) + .expect(200); + expect(ackUnenrollApiResponse.success).to.eql(true); + + // Checkin after unenrollment acknowledged await supertestWithoutAuth .post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/checkin`) .set('kbn-xsrf', 'xx') diff --git a/x-pack/test/api_integration/apis/fleet/unenroll_agent.ts b/x-pack/test/api_integration/apis/fleet/unenroll_agent.ts index ecc39ea645589..bc6c44e590cc4 100644 --- a/x-pack/test/api_integration/apis/fleet/unenroll_agent.ts +++ b/x-pack/test/api_integration/apis/fleet/unenroll_agent.ts @@ -67,7 +67,7 @@ export default function (providerContext: FtrProviderContext) { .post(`/api/ingest_manager/fleet/agents/agent1/unenroll`) .set('kbn-xsrf', 'xxx') .send({ - ids: ['agent1'], + force: true, }) .expect(200); @@ -80,7 +80,7 @@ export default function (providerContext: FtrProviderContext) { .post(`/api/ingest_manager/fleet/agents/agent1/unenroll`) .set('kbn-xsrf', 'xxx') .send({ - ids: ['agent1'], + force: true, }) .expect(200); From e70fcc708e727ba6c2b0d4145b136ef3d75a42a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Fri, 3 Jul 2020 13:25:12 +0100 Subject: [PATCH 32/59] [Telemetry] Add documentation about Application Usage (#70624) Co-authored-by: Christiane (Tina) Heiligers Co-authored-by: Elastic Machine --- src/plugins/kibana_usage_collection/README.md | 2 +- .../collectors/application_usage/README.md | 37 +++++++++++++++++++ .../application_usage/saved_objects_types.ts | 13 ++----- 3 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 src/plugins/kibana_usage_collection/server/collectors/application_usage/README.md diff --git a/src/plugins/kibana_usage_collection/README.md b/src/plugins/kibana_usage_collection/README.md index 1aade472c2326..6ef4f19c1570f 100644 --- a/src/plugins/kibana_usage_collection/README.md +++ b/src/plugins/kibana_usage_collection/README.md @@ -2,7 +2,7 @@ This plugin registers the basic usage collectors from Kibana: -- Application Usage +- [Application Usage](./server/collectors/application_usage/README.md) - UI Metrics - Ops stats - Number of Saved Objects per type diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/README.md b/src/plugins/kibana_usage_collection/server/collectors/application_usage/README.md new file mode 100644 index 0000000000000..1ffd01fc6fde7 --- /dev/null +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/README.md @@ -0,0 +1,37 @@ +# Application Usage + +This collector reports the number of general clicks and minutes on screen for each registered application in Kibana. + +The final payload matches the following contract: + +```JSON +{ + "application_usage": { + "application_ID": { + "clicks_7_days": 10, + "clicks_30_days": 100, + "clicks_90_days": 300, + "clicks_total": 600, + "minutes_on_screen_7_days": 10.40, + "minutes_on_screen_30_days": 20.0, + "minutes_on_screen_90_days": 110.1, + "minutes_on_screen_total": 112.5 + } + } +} +``` + +Where `application_ID` matches the `id` registered when calling the method `core.application.register`. +This collection occurs by default for every application registered via the mentioned method and there is no need to do anything else to enable it or _opt-in_ for your plugin. + +**Note to maintainers in the Kibana repo:** At the moment of writing, the `usageCollector.schema` is not updated automatically ([#70622](https://github.com/elastic/kibana/issues/70622)) so, if you are adding a new app to Kibana, you'll need to give the Kibana Telemetry team a heads up to update the mappings in the Telemetry Cluster accordingly. + +## Developer notes + +In order to keep the count of the events, this collector uses 2 Saved Objects: + +1. `application_usage_transactional`: It stores each individually reported event (up to 90 days old). Grouped by `timestamp` and `appId`. +2. `application_usage_totals`: It stores the sum of all the events older than 90 days old per `appId`. + +Both of them use the shared fields `appId: 'keyword'`, `numberOfClicks: 'long'` and `minutesOnScreen: 'float'`. `application_usage_transactional` also stores `timestamp: { type: 'date' }`. +but they are currently not added in the mappings because we don't use them for search purposes, and we need to be thoughtful with the number of mapped fields in the SavedObjects index ([#43673](https://github.com/elastic/kibana/issues/43673)). diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/saved_objects_types.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/saved_objects_types.ts index 8d6a2d110efe0..551c6e230972e 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/saved_objects_types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/saved_objects_types.ts @@ -35,13 +35,10 @@ export function registerMappings(registerType: SavedObjectsServiceSetup['registe hidden: false, namespaceType: 'agnostic', mappings: { + // Not indexing any of its contents because we use them "as-is" and don't search by these fields + // for more info, see the README.md for application_usage dynamic: false, - properties: { - // Disabled the mapping of these fields since they are not searched and we need to reduce the amount of indexed fields (#43673) - // appId: { type: 'keyword' }, - // numberOfClicks: { type: 'long' }, - // minutesOnScreen: { type: 'float' }, - }, + properties: {}, }, }); @@ -53,10 +50,6 @@ export function registerMappings(registerType: SavedObjectsServiceSetup['registe dynamic: false, properties: { timestamp: { type: 'date' }, - // Disabled the mapping of these fields since they are not searched and we need to reduce the amount of indexed fields (#43673) - // appId: { type: 'keyword' }, - // numberOfClicks: { type: 'long' }, - // minutesOnScreen: { type: 'float' }, }, }, }); From bbda3f99ef0d9780bcf1b9af88d26e3cc04e316e Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Fri, 3 Jul 2020 16:15:06 +0200 Subject: [PATCH 33/59] [Lens] Fitting functions (#69820) --- .../workspace_panel_wrapper.tsx | 48 ++++++----- .../__snapshots__/to_expression.test.ts.snap | 3 + .../__snapshots__/xy_expression.test.tsx.snap | 20 +++++ .../xy_visualization/fitting_functions.ts | 69 +++++++++++++++ .../xy_visualization/to_expression.test.ts | 22 +++++ .../public/xy_visualization/to_expression.ts | 1 + .../lens/public/xy_visualization/types.ts | 3 + .../xy_visualization/xy_config_panel.scss | 3 + .../xy_visualization/xy_config_panel.test.tsx | 54 ++++++++++-- .../xy_visualization/xy_config_panel.tsx | 84 ++++++++++++++++++- .../xy_visualization/xy_expression.test.tsx | 62 ++++++++++++++ .../public/xy_visualization/xy_expression.tsx | 28 ++++++- .../xy_visualization/xy_suggestions.test.ts | 7 ++ .../public/xy_visualization/xy_suggestions.ts | 1 + .../xy_visualization/xy_visualization.tsx | 11 ++- 15 files changed, 379 insertions(+), 37 deletions(-) create mode 100644 x-pack/plugins/lens/public/xy_visualization/fitting_functions.ts create mode 100644 x-pack/plugins/lens/public/xy_visualization/xy_config_panel.scss diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx index 60c31e5d090e5..f21939b3a2895 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx @@ -68,29 +68,33 @@ export function WorkspacePanelWrapper({ return ( - + + + + + {activeVisualization && activeVisualization.renderToolbar && ( + + + + )} + - {activeVisualization && activeVisualization.renderToolbar && ( - - - - )} {(!emptyExpression || title) && ( diff --git a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap index c037aecde558b..d7d76bdd1f44a 100644 --- a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap +++ b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/to_expression.test.ts.snap @@ -5,6 +5,9 @@ Object { "chain": Array [ Object { "arguments": Object { + "fittingFunction": Array [ + "Carry", + ], "layers": Array [ Object { "chain": Array [ diff --git a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap index 6e87e47a5cf9f..c7c173f87ad7c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap +++ b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/xy_expression.test.tsx.snap @@ -54,6 +54,11 @@ exports[`xy_expression XYChart component it renders area 1`] = ` ] } enableHistogramMode={false} + fit={ + Object { + "type": "none", + } + } groupId="left" id="d-a" key="0-0" @@ -93,6 +98,11 @@ exports[`xy_expression XYChart component it renders area 1`] = ` ] } enableHistogramMode={false} + fit={ + Object { + "type": "none", + } + } groupId="left" id="d-b" key="0-1" @@ -402,6 +412,11 @@ exports[`xy_expression XYChart component it renders line 1`] = ` ] } enableHistogramMode={false} + fit={ + Object { + "type": "none", + } + } groupId="left" id="d-a" key="0-0" @@ -441,6 +456,11 @@ exports[`xy_expression XYChart component it renders line 1`] = ` ] } enableHistogramMode={false} + fit={ + Object { + "type": "none", + } + } groupId="left" id="d-b" key="0-1" diff --git a/x-pack/plugins/lens/public/xy_visualization/fitting_functions.ts b/x-pack/plugins/lens/public/xy_visualization/fitting_functions.ts new file mode 100644 index 0000000000000..2d2df4b7b6219 --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/fitting_functions.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Fit } from '@elastic/charts'; +import { i18n } from '@kbn/i18n'; + +export type FittingFunction = typeof fittingFunctionDefinitions[number]['id']; + +export const fittingFunctionDefinitions = [ + { + id: 'None', + title: i18n.translate('xpack.lens.fittingFunctionsTitle.none', { + defaultMessage: 'Hide', + }), + description: i18n.translate('xpack.lens.fittingFunctionsDescription.none', { + defaultMessage: 'Do not fill gaps', + }), + }, + { + id: 'Zero', + title: i18n.translate('xpack.lens.fittingFunctionsTitle.zero', { + defaultMessage: 'Zero', + }), + description: i18n.translate('xpack.lens.fittingFunctionsDescription.zero', { + defaultMessage: 'Fill gaps with zeros', + }), + }, + { + id: 'Linear', + title: i18n.translate('xpack.lens.fittingFunctionsTitle.linear', { + defaultMessage: 'Linear', + }), + description: i18n.translate('xpack.lens.fittingFunctionsDescription.linear', { + defaultMessage: 'Fill gaps with a line', + }), + }, + { + id: 'Carry', + title: i18n.translate('xpack.lens.fittingFunctionsTitle.carry', { + defaultMessage: 'Last', + }), + description: i18n.translate('xpack.lens.fittingFunctionsDescription.carry', { + defaultMessage: 'Fill gaps with the last value', + }), + }, + { + id: 'Lookahead', + title: i18n.translate('xpack.lens.fittingFunctionsTitle.lookahead', { + defaultMessage: 'Next', + }), + description: i18n.translate('xpack.lens.fittingFunctionsDescription.lookahead', { + defaultMessage: 'Fill gaps with the next value', + }), + }, +] as const; + +export function getFitEnum(fittingFunction?: FittingFunction) { + if (fittingFunction) { + return Fit[fittingFunction]; + } + return Fit.None; +} + +export function getFitOptions(fittingFunction?: FittingFunction) { + return { type: getFitEnum(fittingFunction) }; +} diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts index e9e0cfed909fb..31b34e41e82db 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts @@ -40,6 +40,7 @@ describe('#toExpression', () => { { legend: { position: Position.Bottom, isVisible: true }, preferredSeriesType: 'bar', + fittingFunction: 'Carry', layers: [ { layerId: 'first', @@ -55,6 +56,27 @@ describe('#toExpression', () => { ).toMatchSnapshot(); }); + it('should default the fitting function to None', () => { + expect( + (xyVisualization.toExpression( + { + legend: { position: Position.Bottom, isVisible: true }, + preferredSeriesType: 'bar', + layers: [ + { + layerId: 'first', + seriesType: 'area', + splitAccessor: 'd', + xAccessor: 'a', + accessors: ['b', 'c'], + }, + ], + }, + frame + ) as Ast).chain[0].arguments.fittingFunction[0] + ).toEqual('None'); + }); + it('should not generate an expression when missing x', () => { expect( xyVisualization.toExpression( diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts index b5b796dc019de..3b9406cedd499 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts @@ -133,6 +133,7 @@ export const buildExpression = ( ], }, ], + fittingFunction: [state.fittingFunction || 'None'], layers: validLayers.map((layer) => { const columnToLabel: Record = {}; diff --git a/x-pack/plugins/lens/public/xy_visualization/types.ts b/x-pack/plugins/lens/public/xy_visualization/types.ts index 8ea9683ca042c..08f29c65b26d0 100644 --- a/x-pack/plugins/lens/public/xy_visualization/types.ts +++ b/x-pack/plugins/lens/public/xy_visualization/types.ts @@ -16,6 +16,7 @@ import chartBarHorizontalStackedSVG from '../assets/chart_bar_horizontal_stacked import chartLineSVG from '../assets/chart_line.svg'; import { VisualizationType } from '../index'; +import { FittingFunction } from './fitting_functions'; export interface LegendConfig { isVisible: boolean; @@ -225,12 +226,14 @@ export interface XYArgs { yTitle: string; legend: LegendConfig & { type: 'lens_xy_legendConfig' }; layers: LayerArgs[]; + fittingFunction?: FittingFunction; } // Persisted parts of the state export interface XYState { preferredSeriesType: SeriesType; legend: LegendConfig; + fittingFunction?: FittingFunction; layers: LayerConfig[]; } diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.scss b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.scss new file mode 100644 index 0000000000000..c353f3f370ee5 --- /dev/null +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.scss @@ -0,0 +1,3 @@ +.lnsXyToolbar__popover { + width: 400px; +} diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx index 7544ed0f87b7d..981ce1cca5958 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx @@ -5,15 +5,15 @@ */ import React from 'react'; -import { mountWithIntl as mount } from 'test_utils/enzyme_helpers'; -import { EuiButtonGroupProps } from '@elastic/eui'; -import { LayerContextMenu } from './xy_config_panel'; +import { mountWithIntl as mount, shallowWithIntl as shallow } from 'test_utils/enzyme_helpers'; +import { EuiButtonGroupProps, EuiSuperSelect } from '@elastic/eui'; +import { LayerContextMenu, XyToolbar } from './xy_config_panel'; import { FramePublicAPI } from '../types'; import { State } from './types'; import { Position } from '@elastic/charts'; import { createMockFramePublicAPI, createMockDatasource } from '../editor_frame_service/mocks'; -describe('LayerContextMenu', () => { +describe('XY Config panels', () => { let frame: FramePublicAPI; function testState(): State { @@ -39,11 +39,6 @@ describe('LayerContextMenu', () => { }; }); - test.skip('allows toggling of legend visibility', () => {}); - test.skip('allows changing legend position', () => {}); - test.skip('allows toggling the y axis gridlines', () => {}); - test.skip('allows toggling the x axis gridlines', () => {}); - describe('LayerContextMenu', () => { test('enables stacked chart types even when there is no split series', () => { const state = testState(); @@ -92,4 +87,45 @@ describe('LayerContextMenu', () => { expect(options!.filter(({ isDisabled }) => isDisabled).map(({ id }) => id)).toEqual([]); }); }); + + describe('XyToolbar', () => { + it('should show currently selected fitting function', () => { + const state = testState(); + + const component = shallow( + + ); + + expect(component.find(EuiSuperSelect).prop('valueOfSelected')).toEqual('Carry'); + }); + + it('should disable the select if there is no unstacked area or line series', () => { + const state = testState(); + + const component = shallow( + + ); + + expect(component.find(EuiSuperSelect).prop('disabled')).toEqual(true); + }); + }); }); diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx index e6c284f09ab4e..84ea53fb4dc3d 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx @@ -8,8 +8,14 @@ import React, { useState } from 'react'; import { i18n } from '@kbn/i18n'; import { debounce } from 'lodash'; import { + EuiButtonEmpty, EuiButtonGroup, + EuiFlexGroup, + EuiFlexItem, + EuiSuperSelect, EuiFormRow, + EuiPopover, + EuiText, htmlIdGenerator, EuiForm, EuiColorPicker, @@ -17,10 +23,17 @@ import { EuiToolTip, EuiIcon, } from '@elastic/eui'; +import { + VisualizationLayerWidgetProps, + VisualizationDimensionEditorProps, + VisualizationToolbarProps, +} from '../types'; import { State, SeriesType, visualizationTypes, YAxisMode } from './types'; -import { VisualizationDimensionEditorProps, VisualizationLayerWidgetProps } from '../types'; import { isHorizontalChart, isHorizontalSeries, getSeriesColor } from './state_helpers'; import { trackUiEvent } from '../lens_ui_telemetry'; +import { fittingFunctionDefinitions } from './fitting_functions'; + +import './xy_config_panel.scss'; type UnwrapArray = T extends Array ? P : T; @@ -78,6 +91,75 @@ export function LayerContextMenu(props: VisualizationLayerWidgetProps) { ); } +export function XyToolbar(props: VisualizationToolbarProps) { + const [open, setOpen] = useState(false); + const hasNonBarSeries = props.state?.layers.some( + (layer) => layer.seriesType === 'line' || layer.seriesType === 'area' + ); + return ( + + + { + setOpen(!open); + }} + > + {i18n.translate('xpack.lens.xyChart.settingsLabel', { defaultMessage: 'Settings' })} + + } + isOpen={open} + closePopover={() => { + setOpen(false); + }} + anchorPosition="downRight" + > + + { + return { + value: id, + dropdownDisplay: ( + <> + {title} + +

{description}

+
+ + ), + inputDisplay: title, + }; + })} + valueOfSelected={props.state?.fittingFunction || 'None'} + onChange={(value) => props.setState({ ...props.state, fittingFunction: value })} + itemLayoutAlign="top" + hasDividers + /> +
+
+
+
+ ); +} const idPrefix = htmlIdGenerator()(); export function DimensionEditor(props: VisualizationDimensionEditorProps) { diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx index 4a532d378eaf7..b7a50b3af640c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_expression.test.tsx @@ -15,6 +15,7 @@ import { GeometryValue, XYChartSeriesIdentifier, SeriesNameFn, + Fit, } from '@elastic/charts'; import { xyChart, XYChart } from './xy_expression'; import { LensMultiTable } from '../types'; @@ -1554,5 +1555,66 @@ describe('xy_expression', () => { expect(component.find(Settings).prop('showLegend')).toEqual(true); }); + + test('it should apply the fitting function to all non-bar series', () => { + const data: LensMultiTable = { + type: 'lens_multitable', + tables: { + first: createSampleDatatableWithRows([ + { a: 1, b: 2, c: 'I', d: 'Foo' }, + { a: 1, b: 5, c: 'J', d: 'Bar' }, + ]), + }, + }; + + const args: XYArgs = createArgsWithLayers([ + { ...sampleLayer, accessors: ['a'] }, + { ...sampleLayer, seriesType: 'bar', accessors: ['a'] }, + { ...sampleLayer, seriesType: 'area', accessors: ['a'] }, + { ...sampleLayer, seriesType: 'area_stacked', accessors: ['a'] }, + ]); + + const component = shallow( + + ); + + expect(component.find(LineSeries).prop('fit')).toEqual({ type: Fit.Carry }); + expect(component.find(BarSeries).prop('fit')).toEqual(undefined); + expect(component.find(AreaSeries).at(0).prop('fit')).toEqual({ type: Fit.Carry }); + expect(component.find(AreaSeries).at(0).prop('stackAccessors')).toEqual([]); + // stacked area series doesn't get the fit prop + expect(component.find(AreaSeries).at(1).prop('fit')).toEqual(undefined); + expect(component.find(AreaSeries).at(1).prop('stackAccessors')).toEqual(['c']); + }); + + test('it should apply None fitting function if not specified', () => { + const { data, args } = sampleArgs(); + + args.layers[0].accessors = ['a']; + + const component = shallow( + + ); + + expect(component.find(LineSeries).prop('fit')).toEqual({ type: Fit.None }); + }); }); }); diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx index 3e5fb10e080d0..3ab12aa0879b0 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_expression.tsx @@ -40,6 +40,7 @@ import { parseInterval } from '../../../../../src/plugins/data/common'; import { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; import { EmptyPlaceholder } from '../shared_components'; import { desanitizeFilterContext } from '../utils'; +import { fittingFunctionDefinitions, getFitOptions } from './fitting_functions'; import { getAxesConfiguration } from './axes_configuration'; type InferPropType = T extends React.FunctionComponent ? P : T; @@ -94,6 +95,13 @@ export const xyChart: ExpressionFunctionDefinition< defaultMessage: 'Configure the chart legend.', }), }, + fittingFunction: { + types: ['string'], + options: [...fittingFunctionDefinitions.map(({ id }) => id)], + help: i18n.translate('xpack.lens.xyChart.fittingFunction.help', { + defaultMessage: 'Define how missing values are treated', + }), + }, layers: { // eslint-disable-next-line @typescript-eslint/no-explicit-any types: ['lens_xy_layer'] as any, @@ -191,7 +199,7 @@ export function XYChart({ onClickValue, onSelectRange, }: XYChartRenderProps) { - const { legend, layers } = args; + const { legend, layers, fittingFunction } = args; const chartTheme = chartsThemeService.useChartsTheme(); const chartBaseTheme = chartsThemeService.useChartsBaseTheme(); @@ -463,7 +471,7 @@ export function XYChart({ } // This handles both split and single-y cases: // * If split series without formatting, show the value literally - // * If single Y, the seriesKey will be the acccessor, so we show the human-readable name + // * If single Y, the seriesKey will be the accessor, so we show the human-readable name return splitAccessor ? d.seriesKeys[0] : columnToLabelMap[d.seriesKeys[0]] ?? ''; }, }; @@ -472,17 +480,29 @@ export function XYChart({ switch (seriesType) { case 'line': - return ; + return ( + + ); case 'bar': case 'bar_stacked': case 'bar_horizontal': case 'bar_horizontal_stacked': return ; - default: + case 'area_stacked': return ; + case 'area': + return ( + + ); + default: + return assertNever(seriesType); } }) )} ); } + +function assertNever(x: never): never { + throw new Error('Unexpected series type: ' + x); +} diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.test.ts b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.test.ts index c107d8d368248..f301206355060 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.test.ts @@ -331,6 +331,7 @@ describe('xy_suggestions', () => { test('makes a visible seriesType suggestion for unchanged table without split', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, + fittingFunction: 'None', preferredSeriesType: 'bar', layers: [ { @@ -368,6 +369,7 @@ describe('xy_suggestions', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, preferredSeriesType: 'bar', + fittingFunction: 'None', layers: [ { accessors: ['price', 'quantity'], @@ -408,6 +410,7 @@ describe('xy_suggestions', () => { (generateId as jest.Mock).mockReturnValueOnce('dummyCol'); const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, + fittingFunction: 'None', preferredSeriesType: 'bar', layers: [ { @@ -440,6 +443,7 @@ describe('xy_suggestions', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, preferredSeriesType: 'bar', + fittingFunction: 'None', layers: [ { accessors: ['price'], @@ -474,6 +478,7 @@ describe('xy_suggestions', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, preferredSeriesType: 'bar', + fittingFunction: 'None', layers: [ { accessors: ['price', 'quantity'], @@ -512,6 +517,7 @@ describe('xy_suggestions', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, preferredSeriesType: 'bar', + fittingFunction: 'None', layers: [ { accessors: ['price'], @@ -551,6 +557,7 @@ describe('xy_suggestions', () => { const currentState: XYState = { legend: { isVisible: true, position: 'bottom' }, preferredSeriesType: 'bar', + fittingFunction: 'None', layers: [ { accessors: ['price', 'quantity'], diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts index 9d0ebbb389c07..e0bfbd266f8f1 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts +++ b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts @@ -402,6 +402,7 @@ function buildSuggestion({ const state: State = { legend: currentState ? currentState.legend : { isVisible: true, position: Position.Right }, + fittingFunction: currentState?.fittingFunction || 'None', preferredSeriesType: seriesType, layers: [...keptLayers, newLayer], }; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx index d38f51cb1621a..f321e0962caa8 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_visualization.tsx @@ -11,7 +11,7 @@ import { Position } from '@elastic/charts'; import { I18nProvider } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { getSuggestions } from './xy_suggestions'; -import { DimensionEditor, LayerContextMenu } from './xy_config_panel'; +import { LayerContextMenu, XyToolbar, DimensionEditor } from './xy_config_panel'; import { Visualization, OperationMetadata, VisualizationType } from '../types'; import { State, PersistableState, SeriesType, visualizationTypes, LayerConfig } from './types'; import chartBarStackedSVG from '../assets/chart_bar_stacked.svg'; @@ -264,6 +264,15 @@ export const xyVisualization: Visualization = { ); }, + renderToolbar(domElement, props) { + render( + + + , + domElement + ); + }, + renderDimensionEditor(domElement, props) { render( From f3573f3bfdaa107478ca3553bf08afcf88820d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez?= Date: Fri, 3 Jul 2020 16:59:02 +0200 Subject: [PATCH 34/59] [Logs UI] Logs overview queries for the observability dashboard (#70413) --- x-pack/plugins/infra/common/constants.ts | 7 + .../public/utils/logs_overview_fetchers.ts | 268 +++++++++++++----- .../utils/logs_overview_fetches.test.ts | 75 +++++ 3 files changed, 281 insertions(+), 69 deletions(-) create mode 100644 x-pack/plugins/infra/common/constants.ts create mode 100644 x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts diff --git a/x-pack/plugins/infra/common/constants.ts b/x-pack/plugins/infra/common/constants.ts new file mode 100644 index 0000000000000..65dcb2e43c6f7 --- /dev/null +++ b/x-pack/plugins/infra/common/constants.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const DEFAULT_SOURCE_ID = 'default'; diff --git a/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts b/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts index 46a0edf75b756..65ea53a8465bb 100644 --- a/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts +++ b/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts @@ -4,90 +4,220 @@ * you may not use this file except in compliance with the Elastic License. */ -import { InfraClientCoreSetup } from '../types'; -import { LogsFetchDataResponse } from '../../../observability/public'; +import { encode } from 'rison-node'; +import { i18n } from '@kbn/i18n'; +import { DEFAULT_SOURCE_ID } from '../../common/constants'; +import { InfraClientCoreSetup, InfraClientStartDeps } from '../types'; +import { + FetchData, + LogsFetchDataResponse, + HasData, + FetchDataParams, +} from '../../../observability/public'; +import { callFetchLogSourceConfigurationAPI } from '../containers/logs/log_source/api/fetch_log_source_configuration'; +import { callFetchLogSourceStatusAPI } from '../containers/logs/log_source/api/fetch_log_source_status'; -export function getLogsHasDataFetcher(getStartServices: InfraClientCoreSetup['getStartServices']) { - return async () => { - // if you need the data plugin, this is how you get it - // const [, startPlugins] = await getStartServices(); - // const { data } = startPlugins; +interface StatsAggregation { + buckets: Array<{ key: string; doc_count: number }>; +} + +interface SeriesAggregation { + buckets: Array<{ + key_as_string: string; + key: number; + doc_count: number; + dataset: StatsAggregation; + }>; +} + +interface LogParams { + index: string; + timestampField: string; +} - // if you need a core dep, we need to pass in more than just getStartServices +type StatsAndSeries = Pick; - // perform query - return true; +export function getLogsHasDataFetcher( + getStartServices: InfraClientCoreSetup['getStartServices'] +): HasData { + return async () => { + const [core] = await getStartServices(); + const sourceStatus = await callFetchLogSourceStatusAPI(DEFAULT_SOURCE_ID, core.http.fetch); + return sourceStatus.data.logIndicesExist; }; } export function getLogsOverviewDataFetcher( getStartServices: InfraClientCoreSetup['getStartServices'] -) { - return async (): Promise => { - // if you need the data plugin, this is how you get it - // const [, startPlugins] = await getStartServices(); - // const { data } = startPlugins; +): FetchData { + return async (params) => { + const [core, startPlugins] = await getStartServices(); + const { data } = startPlugins; + + const sourceConfiguration = await callFetchLogSourceConfigurationAPI( + DEFAULT_SOURCE_ID, + core.http.fetch + ); + + const { stats, series } = await fetchLogsOverview( + { + index: sourceConfiguration.data.configuration.logAlias, + timestampField: sourceConfiguration.data.configuration.fields.timestamp, + }, + params, + data + ); - // if you need a core dep, we need to pass in more than just getStartServices + const timeSpanInMinutes = + (Date.parse(params.endTime).valueOf() - Date.parse(params.startTime).valueOf()) / (1000 * 60); - // perform query return { - title: 'Log rate', - appLink: 'TBD', // TODO: what format should this be in, relative I assume? - stats: { - nginx: { - type: 'number', - label: 'nginx', - value: 345341, - }, - 'elasticsearch.audit': { - type: 'number', - label: 'elasticsearch.audit', - value: 164929, + title: i18n.translate('xpack.infra.logs.logOverview.logOverviewTitle', { + defaultMessage: 'Logs', + }), + appLink: `/app/logs/stream?logPosition=(end:${encode(params.endTime)},start:${encode( + params.startTime + )})`, + stats: normalizeStats(stats, timeSpanInMinutes), + series: normalizeSeries(series), + }; + }; +} + +async function fetchLogsOverview( + logParams: LogParams, + params: FetchDataParams, + dataPlugin: InfraClientStartDeps['data'] +): Promise { + const esSearcher = dataPlugin.search.getSearchStrategy('es'); + return new Promise((resolve, reject) => { + esSearcher + .search({ + params: { + index: logParams.index, + body: { + size: 0, + query: buildLogOverviewQuery(logParams, params), + aggs: buildLogOverviewAggregations(logParams, params), + }, }, - 'haproxy.log': { - type: 'number', - label: 'haproxy.log', - value: 51101, + }) + .subscribe( + (response) => { + if (response.rawResponse.aggregations) { + resolve(processLogsOverviewAggregations(response.rawResponse.aggregations)); + } else { + resolve({ stats: {}, series: {} }); + } }, + (error) => reject(error) + ); + }); +} + +function buildLogOverviewQuery(logParams: LogParams, params: FetchDataParams) { + return { + range: { + [logParams.timestampField]: { + gt: params.startTime, + lte: params.endTime, + format: 'strict_date_optional_time', }, - // Note: My understanding is that these series coordinates will be - // combined into objects that look like: - // { x: timestamp, y: value, g: label (e.g. nginx) } - // so they fit the stacked bar chart API - // https://elastic.github.io/elastic-charts/?path=/story/bar-chart--stacked-with-axis-and-legend - series: { - nginx: { - label: 'nginx', - coordinates: [ - { x: 1593000000000, y: 10014 }, - { x: 1593000900000, y: 12827 }, - { x: 1593001800000, y: 2946 }, - { x: 1593002700000, y: 14298 }, - { x: 1593003600000, y: 4096 }, - ], - }, - 'elasticsearch.audit': { - label: 'elasticsearch.audit', - coordinates: [ - { x: 1593000000000, y: 5676 }, - { x: 1593000900000, y: 6783 }, - { x: 1593001800000, y: 2394 }, - { x: 1593002700000, y: 4554 }, - { x: 1593003600000, y: 5659 }, - ], - }, - 'haproxy.log': { - label: 'haproxy.log', - coordinates: [ - { x: 1593000000000, y: 9085 }, - { x: 1593000900000, y: 9002 }, - { x: 1593001800000, y: 3940 }, - { x: 1593002700000, y: 5451 }, - { x: 1593003600000, y: 9133 }, - ], + }, + }; +} + +function buildLogOverviewAggregations(logParams: LogParams, params: FetchDataParams) { + return { + stats: { + terms: { + field: 'event.dataset', + size: 4, + }, + }, + series: { + date_histogram: { + field: logParams.timestampField, + fixed_interval: params.bucketSize, + }, + aggs: { + dataset: { + terms: { + field: 'event.dataset', + size: 4, + }, }, }, - }; + }, + }; +} + +function processLogsOverviewAggregations(aggregations: { + stats: StatsAggregation; + series: SeriesAggregation; +}): StatsAndSeries { + const processedStats = aggregations.stats.buckets.reduce( + (result, bucket) => { + result[bucket.key] = { + type: 'number', + label: bucket.key, + value: bucket.doc_count, + }; + + return result; + }, + {} + ); + + const processedSeries = aggregations.series.buckets.reduce( + (result, bucket) => { + const x = bucket.key; // the timestamp of the bucket + bucket.dataset.buckets.forEach((b) => { + const label = b.key; + result[label] = result[label] || { label, coordinates: [] }; + result[label].coordinates.push({ x, y: b.doc_count }); + }); + + return result; + }, + {} + ); + + return { + stats: processedStats, + series: processedSeries, }; } + +function normalizeStats( + stats: LogsFetchDataResponse['stats'], + timeSpanInMinutes: number +): LogsFetchDataResponse['stats'] { + return Object.keys(stats).reduce((normalized, key) => { + normalized[key] = { + ...stats[key], + value: stats[key].value / timeSpanInMinutes, + }; + return normalized; + }, {}); +} + +function normalizeSeries(series: LogsFetchDataResponse['series']): LogsFetchDataResponse['series'] { + const seriesKeys = Object.keys(series); + const timestamps = seriesKeys.flatMap((key) => series[key].coordinates.map((c) => c.x)); + const [first, second] = [...new Set(timestamps)].sort(); + const timeSpanInMinutes = (second - first) / (1000 * 60); + + return seriesKeys.reduce((normalized, key) => { + normalized[key] = { + ...series[key], + coordinates: series[key].coordinates.map((c) => { + if (c.y) { + return { ...c, y: c.y / timeSpanInMinutes }; + } + return c; + }), + }; + return normalized; + }, {}); +} diff --git a/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts new file mode 100644 index 0000000000000..6f9e41fbd08f3 --- /dev/null +++ b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { coreMock } from 'src/core/public/mocks'; +import { dataPluginMock } from 'src/plugins/data/public/mocks'; +import { CoreStart } from 'kibana/public'; +import { getLogsHasDataFetcher } from './logs_overview_fetchers'; +import { InfraClientStartDeps, InfraClientStartExports } from '../types'; +import { callFetchLogSourceStatusAPI } from '../containers/logs/log_source/api/fetch_log_source_status'; + +// Note +// Calls to `.mock*` functions will fail the typecheck because how jest does the mocking. +// The calls will be preluded with a `@ts-expect-error` +jest.mock('../containers/logs/log_source/api/fetch_log_source_status'); + +function setup() { + const core = coreMock.createStart(); + const data = dataPluginMock.createStartContract(); + + const mockedGetStartServices = jest.fn(() => { + const deps = { data }; + return Promise.resolve([ + core as CoreStart, + deps as InfraClientStartDeps, + void 0 as InfraClientStartExports, + ]) as Promise<[CoreStart, InfraClientStartDeps, InfraClientStartExports]>; + }); + return { core, mockedGetStartServices }; +} + +describe('Logs UI Observability Homepage Functions', () => { + describe('getLogsHasDataFetcher()', () => { + beforeEach(() => { + // @ts-expect-error + callFetchLogSourceStatusAPI.mockReset(); + }); + it('should return true when some index is present', async () => { + const { mockedGetStartServices } = setup(); + + // @ts-expect-error + callFetchLogSourceStatusAPI.mockResolvedValue({ + data: { logIndexFields: [], logIndicesExist: true }, + }); + + const hasData = getLogsHasDataFetcher(mockedGetStartServices); + const response = await hasData(); + + expect(callFetchLogSourceStatusAPI).toHaveBeenCalledTimes(1); + expect(response).toBe(true); + }); + + it('should return false when no index is present', async () => { + const { mockedGetStartServices } = setup(); + + // @ts-expect-error + callFetchLogSourceStatusAPI.mockResolvedValue({ + data: { logIndexFields: [], logIndicesExist: false }, + }); + + const hasData = getLogsHasDataFetcher(mockedGetStartServices); + const response = await hasData(); + + expect(callFetchLogSourceStatusAPI).toHaveBeenCalledTimes(1); + expect(response).toBe(false); + }); + }); + + describe('getLogsOverviewDataFetcher()', () => { + it.skip('should work', async () => { + // Pending + }); + }); +}); From e1da6a1f8fbc4fd34d7d5454d45af6d02f1ea45b Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Fri, 3 Jul 2020 09:18:37 -0600 Subject: [PATCH 35/59] Add googlecloud metricbeat module to Kibana Home (#70652) --- .../assets/googlecloud_metrics/screenshot.png | Bin 0 -> 2838528 bytes .../tutorials/lib/tutorials_registry_types.ts | 2 +- .../tutorials/googlecloud_metrics/index.ts | 77 ++++++++++++++++++ src/plugins/home/server/tutorials/register.ts | 2 + 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/plugins/home/public/assets/googlecloud_metrics/screenshot.png create mode 100644 src/plugins/home/server/tutorials/googlecloud_metrics/index.ts diff --git a/src/plugins/home/public/assets/googlecloud_metrics/screenshot.png b/src/plugins/home/public/assets/googlecloud_metrics/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d90d27ad3025c7c785346ff34014cb9ca1994e GIT binary patch literal 2838528 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 z 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´gEhQ%2U0PPuZQPWVheAiK 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

T+ABzrJ@mXs6TJ!n3 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⪙KzQWR2`?6YYNNUX1~lYpIbmoVG)1Y4YY0A$@_ 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

-K-en>&gP)$7r!SB7QEX85I>)O2 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%0A8_L|!Yd5v%iof3i!PBy(twaDq4W*5ZRuSL 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

!6&C`4a+bq<3d7>TiPJU>oN$04ke@x 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

)ga=X^4GfU!l&mIJS}n`yq6C&kzbGX zINrU1VUf3yCv?6HN1o3sCuAD)9nKS+PeeMu74OgW*xoT6FPM=${N)mH*8ROeD0-8u zmZ9nW9uKw;>}d$UYt`O`(+tR4Ug4P%-1uj6n_v*kA~Vo*=s<&s1iO4~OP8^fC?FCH z#4VUMnvI-iDluxqI;nFH!p1DqRw11pepIm`cQjbzvvmOs4 z(JbLtt(vePM$=4|Nt~L?c_lW)K0X%CuRm-?UJ@_87{>R}6B5deVi_ns`2NRw1pVX+mI`Nx{MV5#q5=Na~2?%*? ziK9*u`&0K6+Ow2@TF?=qgx~n2xFPAc&yoSa3{GcJbhuwVTuf<*UaOt}w$iMekcy~h z)_IHQYr`5Rr_iLDvcs%cfWTGgS~}tA+g0Kv@%1MQ8w!(97>Qa9SEt6@2&Jd>h?Ilx z8$ar3CDQnzG=2EYmgKQ$>I{$UG56iM-gQg`UuAhxJU)u~cQ-Wf5FexgTg^QtsY^~- zHP1@!qr#5}{_>&q@Y7n6?X=qq(;)?qrYoIL6~dmJi`C(;i^#dqiw1-A(W*{gk>N09 zXAh;N__VzX(?p42d21PZ)qY`}tLOElO?XoIGmpo8&WoSH&!ZWmUw$6jm&Fhsf28<7 zX{|W9BWXn!j_0T}#Aiy=!D68Cg1;+CMbxk=2ziS%Ysk@!Un=8=`7fx7g8}5cQbId& zL?Tm?FTCey)Sq*sv{|H_ZHUs(%Y5@liE$Rf8hJ<743P=TTU@D%aSB@qUe*Mt34rm% z++$40ysLkN)(1WE*uM6O#nUz^FG6Xd79`y;6o-1F1KDS$kLduc*)CL+((D2|S#UMp zc-*7!3of@Vr@?Do9&%cdr{>GE>7Et#reCc;>W+Sk#3&;L_T+x~BhkeC$36Z7LZLvR zB|?|(*9Qw3=|21n@1D+b90>X+qu|fauzZ}qYQ!4!Bexj$BxP29MPw7X9^6?_FgWVY zd2@ypl6)4cF%W@VRv8xKEwG7wX|$n&3iTNz0r=IosOHEv6L z{n!RhLhO=ZD`2H?afM9@gXVfYS1={@xdJb~88{!yn@Mu!Ug%G86Ja30IN_6&i{3Bf z6sCP&SgTMtv(F-=T-5WO1*K{0xxC>~K#jfv9)l;wXVIXG{#3W|nJPV!#w?>azHvki z(AN{Z+V5%D;K;=J+Sn}rb9Zp>qP>c9zlP9mzt7y%aicr&y}rq(T6}6FAhoaXvs>)x zh!Z$SKE2h$(9x}-@E({w0C6nCnlmNn30@L69T>|A$&S|#dmfciTXi&gGcLeDc09B1 zhZv5b?k1>@6QOQ}Yi=p>Y~0MJv1^S!rI5PPXc1*$3PwN5Yw~TVZP7iIk9urFq%uz+ zZMx|8SgwY~MB9sc7tf29lc0A?vg<$qArfBLz2Tu>p?Keo`BLsS@LYIDY!_d|_8y}H z&>3=I|IHi>mo6a2JyQ-$eR&q(^LSC!!kG*WNs zOZuaiF&Irg)4%I*;1;6?`A~K=#T;V1!@TJ%8z zr8kG4`+OqNVfqi{CfU$K9bV|*fxsg2^wt9Lo+Hv_oS2}0PKrBmR}|>Wt1zxI+;|!V z1o2zH=bAi-yQfsgfY!Iv z6yWrr_>w9;JvwKY4Gk6Qw=2FWcrkWCc&BX8w70yodp(;M-zuMXFpTjF{|lE z3gjIbSP$->`;h{aDnij4lm`yd;;rNXSGdu**2N(`V|C@&8GKmmR3ESw6!IphIlfoQ z=ynu6n@N;OEPSeOmR}(K+!_VCp7VA0=d<~#J_nPZqk(&`(f|U(;0$B!5tRk*Jh_6N0W!Y<@q={@8>jl9Cj8)(wehOcTnLVgi;hg@@eHUhV4v1ZeKGAN)YLlY ze`fLNk4)l2*N5wKUx-0R*2krX%LX*F1py>SV7BL zdfdXTEYKsO_|i4rf0;p3aAh<^y*0q{p#WQ90SoP78XB=y7HZ&thz*FUZA`Tk(iGarZZ{d*#kkSiZtf32Xzs_<8@TtWO=`!3prrSzlptC1sj!x5LGMJ?=@)j%@xqArg^74J60I_ghNWOz_eh*r zybzr5I>{VXHS&z|O-I66E;%|Yil639i40k2D;JKdi;m z-lk)T)(zu*7}cYEvjq5iT+)2?2i*E!_d-)Ej<^9?| zGckJc(oN^Jnr&FyB`>{iKr2O}Oz={Z%c67rI;yH>-$Ifi@P3&3FK7FNr?TyhLphX@ zW=6E?gfnn{@lQ#zA?0-|W{%-*2sy|81O7gxRZ#D=yeM^`fXZ)JX|{jjCjV)Q3KSx| zfqmCu8j5*FKJwa4doH(d@@`D4xf`9ZM*8q}WuOIn0PGS=${HL^>_^r#aKG?7ToLD$ zv`f;?dF}^b>QBp68otYVB1Syj1&No(3;47$PZ|UQVSk9jnUf4`vTDCv9}uwEW1Zc! zLEte;ze0hZZSpzZj;p4<_|P7tKNQvIyjh;vQD=LS$-9uy;-cIO#`Zmcsh2LC=`%>R+6T>XHrbPb-{&6kxzm!4E|6j`BASIjUNh+C*A&aQt0hJq{MH!dmiJoxn zMChA|DbWAGMXqsih|`_Z1Z`HC40wGi>y;)ti!Jr?BPkuuJ%9f9qm4;$3s2PJ?PkI` zf^4b0GoA}age$ecT?m(v8seCE1d+P{enICl8_(2YLb zlv;Et)OKvNd9x_0(&-ZRG1Rjcjo8hUfkvB{4GR|aGin{5gc>j;oiGV3T8npij}DD= z%PWWCpqaVT3rKr;V1B9-h_CAVDs&mYGZ|bR(o9DC(eMCj0X}}J36gf|mM-!jyfxY9 zZ>Vi-MS5d)`(xB=Eb*oNSccd|8-1dk2d*hhU+Qdlvq+`RqSBomX@g!4E^r6TopGiW z=X`#pf)dVHewhh|X*@gz-p?BkvoOKed>L^>@{C%{F51`D09 z1mCC1)WoHe@pl5g6dm=bo;ovoergv_tzSNl(X;7rikrqTL*bESZ7i2B#mVTrMjflc zcyd)Ed#;QO$X@Stcc#xRCDJu$faC`V@OM=94uUn{%>O#HSk*=feIw1u#nQFAuusM9 z83d!DW-O()65O|vq}H{5*-f(wx+TVs#?7t3wS0MUnyw_FHeQe2%Zs#W9Ttnfgp^pg zg4fprt_sYdO}m^63`>8G9zMq>J~UL~WeUa^{0ON0Qt4v)376kx7(FtTeFsU1DH8)o zdd>YoxlNWYH*LMmQHbkg$Zd#od}zKLqBmJn%9!NFsf8;)nd8Qdd8~VcEObg9uOKS# zTk7w2C8p|PbR2*SK-)bHxdA$9pq_^kIlcXtYvNNxtUUSp$a>&|u*gxEB~#T(xO6!K z6=ZzgyRK+LYO?q{u4~jp2yPMPT-c+GDbYn-e!Ru{k_W9-UdX1uD&Oi;$FfnN>~50* z&CT#y)27VQkRikT1SZIV+d0=YZglA}5>o=|&g1)YghLB=(zm3pi*Zu7yK&9-gDIUf zNg#Kz(0BQWskPPx(pt8CMj-vVolTHVH}`x#(w6L1)#=I~MHgq($U!M;jsD7;tdVFZ z)M$C5z9+GSi3ANv{z85V;5-AlXfz?RhmBBV5k+s@Ro-{Gc|;PQ;ZwFApUx(W-SNJSU*bx~g|UDJ@JSAnA=mLQ`v*1}h~~CS zE=*z0jE#)r|DHD=KN$Y#DnGwTpy$_p(xX(brt97#j?+ zNJp4GZU^?>Ris(bG^11wzZ^<(8f}`iE01)a%u+W=J;aDD37y9D?ov`Xg#ck1a4;}c z=1vM684^8h{Jo_f&&g=`u~mHf&@;u0E1v5ZXN?TDg;tj^;^Mwcm(9zwJ)PGAeWW@%GP*sw$+*Aw#PcuRKtUBmmg+k;FCx%*6M;$9TtWe)-3?YQtwaN38`E3izG+?lMDq z%2xW14%ww|H7?1FNH5U^MX%=3a>DzB#YX9}k+Q$tgljwzSBRjFeB?gUen|AMDG&Jq z|IOE{;=K-JF$-w-Q#6F@ZE=yH&{$C{jabVFp*X#fKE)i~VOy;jMR>9w41K=UvWu9s zV8&u5rh^r`60dL@7>&b>IB$qoIWHa?RZpfD7LAN0o>Z@L!>pw0sHJ>i=Y>To8gLZp zp?=r*S=W=c0tSoIPou4mpF&QI!*Wtd(ub=1bcakD*ohMyj$V?9W+Ee64jOte9P`)% zK71P7pbXu!p%qFM#fVMbq2$9m+!wnBy z+cIK@b#I5ffZiVkUXMpTl4nVpzM1uJf;O+{q#cm8r`wS8Eg28Yqyq^-ddBgnWWIf>Y*Hx>}uVYZp>5}EYn2e4KQz~ z@tpShqqCHx?)B-hr+4(XVEG&vuQfvT=$j2s`cb%YFJ9G^weTI^b+uqA`qf7QN3-x- z9qy_0s(G6MKB^Nl(sRs*_W{65<#*1)uPlTN~U3X0Dz1_2x)#;=^xV*PI= zn&XFrZI_ssQdZxNh28NymGI_#LVe#r$oq{ga;d$7Zg3K4GxYQPU3Xj*G#`4I_SXHa zE)fPAEAe~d_e)7B9H>jlQM$wi_U|=1JX5a4{YL03X2DOd0jy56yNo|xtW*3i1{3&t zMNwhv3$|XuaE%dwR3vC5Xp!APWyKUGre#sKOE5&R}Zq(MLfeQ5ud5|Z3 z^Y3Ii4q2eLu8RQ7I2UB*RtS{N`R0lXg?5ygopZ|# zwy#pl(T+d%34#1Qld*$46z9dA8CK>(!e}5u6X3^lnsZJ$C|#Wt|4{e)4=A$z9HO+> zgCTTeLp*YlLzFMx8HSx%KB+dLnD%U>bnn0c6Wu9hH`Sk6f zf-kntZeHk*pyr}eJDq?~i0wjNY^sWiVQL!ew_MWtuG9a>C->FCi?_9zrBVoj3kibY z;`i=S;{Qb#2;QV?es5LxGdja>i@la)7dl;GyUcSY(&(CtAkLA3Z(4{>X*oDMgPlc{V;(V zqwkCig3HB!<0P~p$a&EJh}M6NymS8}HE(!`z-u~=F{SVR>z_gt-ZW!V38=I%CjcJEwZ{Mex@Di2Ppw zk7N6xTL)K+y47ANWX2b?WM9Xg>r0jNI|QtO;}NR^LqcM)fH?{HzN8N*on(|Y z)XgnYnF@cd8E@0i)^oQH7+VP}Lb`*Uy&p5B!&TvhXtJk^8Kdls*oy2(`N=?%xkR6q z;O9l|fB`It!%(iskth8GmIncyp57d0Myz!dPH6Zw5oDING~bdVTG!UQ*yOJAlF0YX zk7pl|Bb>d%-MQVXX>yX&)t(NxZdOrpU@V-t{q?~(yFHtN_D_JS6|V>r30#Ttr+^*G z7t^4(40Zh-Vqe>3Y)nK@(P&IvX%Ezd&;%^+Y}V5n3`xH;wO}`;XXJE(NPeIECa#T7 zZzCIag6oEJcSu^LQpfUX{x29P>=+RdehM`rh;&wxOq*I6(3$l39l(E~eMzuZ-x&j+ zna10C=j@__Vz1~c{Df?0wQ57Q+Pu9cJ6;@7Z2M`_tjU895?-vrE4||@(*J-JGQN8? zh4F6+^|Sov4T2N)0`9esEAy7G3QYOMv?o_`Dyd;hiVDJ`0w09829R%;biQ7!zai|m zVKJsIMosc(;rA(8cz5NSpG1ez5w#7b0rPk&bu|+L^nroPG<)pfT}HNfKRJOEy0>8} z=YgL$o$P9l7$b-1cc$F*hNZwe-r~1a{U6@d5z(?!W6bw$X;dD&JnN#B;Nm((ewuIQ zeR(7hDebDgo!YrHdqpMbXecr7aCc$u*ZZUIJjWqg1=MMu`}kUwSsfSo^au3fgK&kr zWIZ7{7z5aZXr`zoljO<2UByAYTum*1Gd10fKtZ&-8LdaL^Zpw26VDL%BqAiDaICf{ z5UlsY-B}u~>dHnhmtkd`(d0)C4A8wVjXmoE?~xQG#1voL(7w_1xm06P2G!!Lan?if2th{T^j8bfR^2mx= zDB34p1Tfz(Q)gx17Vc^7yy3v+6~u5O1N@_ps}=>0$V1u$re~yL5IpDqssbby>n%3B z<#oh#7%t<;MB#U10A=X$LX=$s*VfNnG9n+a@X^0W6LDg=GAk{+pBY}d{cJrCGC3Jv zIXoU+IaUl)VRq+V;-8r@`e%f=u9}}2BX{r9kS7M;uKIvSGq`cxxH>bcq02eXdRgB$ zAg={a+>pYu2XZ7kxlOnp{+#}rQ(gR^6lb|mZxJbiO~aWV4NL|b7^md+dw?0bV<^7Mv|R4>ZPoa_3PyP~@R%7L+JLMU{BXIiell#92!GtxK4q*Kk z|IOzaYQvpQqj5Fy)ywCkubU6AMxEPZ0|K87ZfNZCrx&0Ewy1oW2mg37;JL_0BhH}9 zpm9I=<)20le2YF~E2zjLjAA!h>FV42!&`5$e(KPa2&IAd&}t7EzYeN!Olh(6*4{mcU!PHV^KTvZzeD0w-)I^tNs} zAs?RLjo!$Y8eiif8dPp>ESgLfgC89Nt;O@V|3^)Rfnt;y30du^d z=*kcS5b@!cqf|1X(@I0}285?ZC1&N+D5k?6f^4y5I`Ghr4fQ;&AoRa)lY%&L^{DIqpEsyosdxXLztV5? zYx%J%`4FY-XT|JefBm4vTAk(L;BRjwXV+)(KMRAhkfGc`2Nj^pgMYhPSd%C8e?<@6 z|67-Of!cPl>HEi8V#UbOgH- zu1ri!WFW}KX8w&f4+AGoAKA7V)4HIXbu-L_wjB04`gNbvI7Tj{ z3YJ~P&F1LNAL-PU3sZ|knU$kU6yGgy3A4A3mBzX0jih^aFRNduCZhVfZ(;7>xXJGe zgQuca0m9@91a8vc_jELsAHR+*IqENbqnN}KnCAv>TNiigC94|si;dqxQ4~cd7#Qj3 zUdu_|1D_y>8i~s>@#%s$VG+Op;bG=~5?4wQ(l_m|yIC!=!@E+!I}ou+iDWaKjQytX z?hU;xZ|$XSs<@ z2(FybaIFGr4YCP6*k{UTQ>?11mEf|RdRI|s6#Q+8*(-HiZeVy7ST~~{vs#5;kv|Pu z`z>d~O-t=f@@xm`Pvxgh{z^$*xIyonG`R9IS+%sr{9fm&1_c<=wYrca;pOspEed`( zz{rK^ke{q)UzL-OTY6CQy%N2oq6>&!d%M%y%5}fvMqemu`c`vAKt*uAK#)x*X*LBa zjM^>xP(3a%lpp&Or(BRxNd$L1XL9f9r0{5eW74GRq0L4X!kn2u=$DZ8HhI2`zik0b z=9#S;Euy)G{)`*;@KIB(4U&7+c1?7_VMGl?>f^KHk}gvI?bdAm4>JoYs&x z%vmFS8PGdyK6Q#^Wu~ufKC69+Z74N|IHm**-JRe0ohVByO1vk({M$3JRdy*#A&1U< zRj-T$xf%O##!0_Kyvwzf=@+W2GzxRmbmEg2>Wios8@TY=J?Q4|@3g+W$u_r(c;=&4 zamtxtrJ)NyXi#%1=e#8`-%`n-#H zjb$3@6a@xZCeVZ;>4Z21!05H1_rHro*rg-`^u+#R#q12L{QbC>OH+nO{8xrmmGI+S z45KUyUYxdJ955MAut~v08^aR%+*h`tn66Thd(IA|%&QxHfotI2b6_{8(?tGxFz4$` zg3e!f{9(}ht_(Zo6wB#>O`SG8cb&k6xJSa}2sen$<;5Qwq!gQOpWoB?k?JO zHXDE5cUF4G69;BprhO$uEN@@m|B=;?QW>4Td_4G{<8nQ>4K+Ogu#LGlJ zynx*aG^zOeyE4*kg_}~wSPoJD;wP>Gb!WAU2@1<&&aJqU-hlBk0|6) z;HjznPY%5EmeO%Hb?Ig^0&eRpJQc>oy#j`foH1oSDu2BQ6QqqNx5ZG{y9>9sZ?Xa< zd^X#W69yeuKUREwZjP@NFD_NobQfL{RzWMp#gNdYAVXRBa2!`pWm){$Z|xqrA7H=2 zGz_ZPAv23z`+QitgX=h*x{T*e$cnrzI@13-1Kpge=*Joa6OI=A%*Jm72-*I5W+qGS zJTK%Nyx&*PIY8Iwt*UdtC~s%T!C`5WpgP^DpHA6ZaV5el1&tVRh^TtwLZAFtyIhvD zS&AD1_Jn1B$G$*#%g zkCHlvc)AyE?AXvL=Y)kj=3yVq76tv1qH29Z1>pU)A|<`J$hF2nb83*6Q)3lO-w8~T zn3S4k+>|Rhkp3ZMPvU#8FbVQ~A@}01FHy9HelmQsl*A2X{mhHbkQ|bwk_bhAw0v|7 zrIO{o$7Y9ig=h^y^mM_WyFm;SVJ|*MkKXVW`x{+-I`U`n;?ndqAD(Qg+#UM%A+r5^G6rv$cJzv{3TP_|(EQJ>yh9 z6=9`WK&+X0#T-K|D=k)ClLgUif18}P_y!7_skuqyd?9N_*!KFIHK_GD0di8#}57=!r|+Q~x!v7n2F+h@Awn{nKwf-UU6%=E~?1^y?WGGjg%# zu|5P-{$u_A(w+2|O>MvZ8z6^Cif&@L;$yYnZo|4`yf5NFhdYyl4YExjI-K#f0U0m? zFJ0teQDX2o+1LXVqL4EOQ>CZ_G6itO?GB>ud7rKjJtgp?*46mR3C`28^!C}Z5!ae7 zrJzZuNuEQzMf()mzzO9DQ%esJ2YlXf#6f*VPuM{;D z-SfX@cm)v1Q6L8raJ|5g#l^;!h(JeZAeuy)5KUo+UeIm`?PUVbEwN1S%PfK#@QFnw zb4}13^S9TcUHP|x&7^Nctixl1y@gEp>TB1M8}A2*DFaAU`2_&wg)}rvZ`XJ{SMWlW zg$U@5OCXu==s6*27MPHmJxI^xiQo8qyU-NtD_Uw^hcQZ%eY;pEJbvJG70TCJv^X z0|fOnHsn4Mp}N6ZLRTM5_ysqZCy8;)_5iZ0JaF_B{C^BlYT}|i@6;?7QPqap7=8*z zva{kiqD0K1kS)09D+^;#SQ<>%hVVhH9D#P z6?uUORj-ePsXrwyBGy+kb+WZ-<`dURGJykUq!~uv&6r+o`xQ3OCr}$qb=);m3IX=! zub*sboB7AMU4{D7gY)|e7ZnPsD^{_~X8_~ORgbuQ=-&!Z09<7zIcuN^aO|s0dCrdq z;qQeeeN#1E-hgp*C}hiKY(>K~;&va|G1-P$5b)9S$Hs}_iOoP<-yiCY&u#~KASN6n zk9LRpkD=x6L^j%2qxU1EL)xoiv>uM*pi#KNF`1=Xit9N-)mKJTWXo)9;2~)ql3OpA zrQ9!+Zd;s2&m`IR0wWor#RNW)mF2>8X9!8xC`5}=lW-q+pykt!G9sU*P_T>ym(fri zc9AtFded%o>o1IiVZAPuo%O|rv4qZPcnak&?{NerBi)J-lK^?;O{BXImEgX7fkA;v zX}uTbZ5skdg_sgOGxb&^!4VHv;h zaU8V#8*r~gAWAL?pj?bIOdq7OIxL-kwv|oJXPu+^uJ2r2#Z2F2aVAHyvflO&qX^OE z&R@zlWuzygQOp-s$%-JQa#jKF<*p0alqJDzH3Y)77~AWgQOSseLg_ePtyLsXT{1{X zga(kx@%AXeZVs=EUxPPuKvz96#k7{TG(oylNh-sw_8A2U($JTGv2<3eWPTwN%h&s= zTD1YmKgr?;>h?QdDGIvq4I{rOv=X&Hm%XV%9ZPniFkFKKR{t2Ja@5i}2dZ$=S z6VIdu!2kY?!57((F;2^{18&5~eJ0~P9~3l68}xKw(8Y<~2JAcLsBfI$xvg?0Jvt+k zhz>Hp$W{LZzQ@{$YCzxrIjZoKciv%u{@eY|T43eFV&Yl~w5s^1z=^rIvTW@aw$Sce zm;?k!BNwdJK#NoW7J07{CL%L{GwVfFOeaJ2Ip(^>GDmmL(aaB>7fXyuIHf@Q=+a~c z=*-IQ&&39ENcL|aeOw8XkOI_|vu>n1%Xj&x+>Hg56G%Nb0JQ#ufQDUtWh=5y1?@2v zUdJ^g@#wnG&F*f2mc#w0#J3}kKgT{ZV|Xg5%dMGI`w=p|Sq7piT0d}wiH(IfDy>*w zp15eaP3cq3N>ac`J&QQ?k7QbPu#KnhWAwuM@09Zkq$WbzZ2m;f6Geb zr)w`g<__3@{7Xj)CBiP@q`tn(dXunuP5-OU47^S)T4HjPN=###hg3f({WXaPo`?(5 z^Xz}nt%VwYS#`-(>a}m{eby0E2HJv%N;~K^f{83p#uns(b_6gyGc^cCQwgg`PkjPM z2)_mlPyL_uO9oo*8(;&gvC@7_g8(^}mba3yxJrH$!?`WJ+Pgd@VjG)|*uW8H4pP70 z!JU(utpYhYybE_wz&`FGC2hDsHaKR8X*5Q=)nWMdWOYpYr30L`KLzp&8 zc!6u6aOEw>o9(oNSCM~C4$(!ZwbJby(!NH6&KZ^o-W>8PEUSxPvv|k^fxY^>y6fmn zg^oF3tuTIJU4V**c15T8HW7g?mr!<}vcvV)((c>ATk;8sCMYQ&Dk?Jh0cilaz#L@` zgSEvbermI{k4P-p3UJ+T>^Oru*}XoWm+;&MaB2p4veGFq?5h&ohZ9nNxt;-#7S4P{ zGPcLcEobz2!^r;L1$fzP5Aar((aPP;m@juQeItMJo6tJ+vBY1~t(@VqevzD21J}+C zrWtQ6jaXAzvcOXlX~<0^j> z+2zW*c>Au@Uh~w*_)tOO;>2aR{+IG5x-b1!q;>>6pQl(M;Zq@z|K^t4Ni#XLfDtzl zC*V_@-?||+i*oaWwM_`YQ76m?JH@R?R!ES5=Lr}9o9$ucx|V*Ce;Neh{iXl@;QIU* zN&Q3K>)v@mbUY&VTMDo*&uc5Ojc>%UI#sI)A2v$t$%NBFZ5i%^45aYP>AK%o`?67N z5>I%QQ`Qm+Wt0F+G`uT~u*I{~Hh{ySxb?(8w?Bim4`n1FAuTE24(${?+19db1<#VP zI5`Vz(2QA;4%xCyjVm^@Wt$yZ6qM%P52FW021vsH54PSasLg%*ZQqx0YqQ)sQ)&@@HN`kl>WmIcY3DA2%S9q_ zPf?6)3+)Duci&t*o_bLDp`=srzLOKx|GgJHF+wyG8TFqiYk1^>&bLt4#$&MOX&n6S z(1cKK)co&ETie;kI#*FgFoc_mewYU9A(l6G8wt;fB!cTY%p&Pzje;u*PUEj0b2}*@ z2L#qfnp!oYn4=}@!hyqld-WxHZ0xQLUy%-DLSBd?iUkEUWc*22J>@M zLEGXd-fSSwi)M-L&X43!BQz}J_z_T4=A!kE?a;H1 zGar3iV0MF!UWG;L6}j?raFZMKd>DQ3NF<(|0o^g5wLwD6x@e2#$Rtrs-&jtnSOLHz z9CcrVMJ-c;mLKW==El1|Y^SgY8g5QIoaKb&6z%+jhUZ-Ybte{O7Lf(sgv;T?E7dR< z$8!>)s#L%vFr(UL%8$uVf20(?Ot7C)ko<^$@ z#abQ!F9YTf`N0ntVVwtM#HbdY`EJLP+A+PZg~KsXK1_6ZNi!!hCtI|rOc&9kcxWRu z9{P7X?xUA@mbw_)^Y&>Oq(6y+_$}|m2gPKNSf{MjpWm_y;kJSk$Wlmpz9+9=V}}Zk zG%rgh#gfV7^st>BN#@^rc;ztb9E0pRA7}!$i#+Lu(N65Yi(Wq#RJd3l^u`>pu#st%)u_JApF_NtcA!x|&f zWZf`n5ifTFM9$v!A!UpFkn+e++ted9V6nI=9w{!{{M-6Il4(~*aku|3?oXkAJh;UV zNGYMYN)8CL-1PNwflJI^t6tNuJr|>sIa%B#2AQ6!Q5=G~R@6-5eZte}b4ByVHdU)Q zh(|bt-Ers6-p*wc*k6ONXEV90wkU^F>MoycvwS$<#z&|cDB*L@kc&z8@XK!6icAVI zS4w0h*bd?sq(wAvi181u`_J5CeC_XYq^47U)kYK`061(Mar%)hxU5za#$q>o1Xn-5 zzB_sA+q_HcBK$Bpc~pfhnlxbVA#9@7JxNdH=gEPx%i;hEz`6$x>;ip;+JtJvnZU$@ z8a|zWbIW(yaK|%?OKcwa{R+Hy?imP9;3t^xOV1=Nzbr_sjS`T)71P4EA|oAJ>vuK# zWii)rkPzlO5)No&B==mqSPwj=9yC{1F*3@VtuinmMI+`-LP8@7CUHHQOBN48Lg9nF zEe;L_ZXzWUoh;VMioV<#yShNv^!|y&1a^|tf-{s483`|4WpaFh?qj_z!t=a;bMeF~ zQf|q;M7Hq`ueZF7lSKLmp*LvFnsagKi0JoTjuCY-SvGkYUdw2IEEP+YdBLd>sp;bD zLhj}T$A-d-ic*4ETc5j6fCH)10mJTf0bXz>HIEf@F^aYhg-8#O~FBlJEO7Y z^2H5Vf6Rh1kN)0;KIFHD8W@;yvtIeNehvC6b)b2Fq7{8Aje2PlOeRSEX-Hl~n!dC9 z71aIFxQ4y9q&j6Wm2(XQ(bPnFRV(}VY-l5P_e za(v(a#a%X7QypLnxBl&jg{QNmk@Wcctn5qHnZJqAxS`$D+xp>ouI4x~LPKY}F_8`>4QGQ7+ zWrxH3Pf--%XmiHusnm8xHvabq=5~JiW8x?1%yo1v2?fO`z~*1K($gnTik_4;Ro?gcTJxXiCP_q2`ye-FV@n5`%xk+e7`{3Gp;H5aqP0tYKQqbtX*J1Bd$P+m6>Xh^E9Up~`Jbu{g(0%=d*?(4V0eL;bZ*G!irfiy!d!;ulBt3jk z>Up{AG{!SO2!kRp4Pb&@e~5^~3vM2JYYmheLq$I%@Uj^U_R1=*)VBwNVaFrXnz&D0c0k>Bm{X9RIJ z?_?z0duNC#D19*T|3;+V=wry%#C*3GAnFn@`}}0Ac31UbjVavO$0BpQ0Z`>Zu=9zD zJF^q^6`V`1yC+-&yK+*OZ)NU6A-S6y7QOrLkvmm$)=YEaoUA zIPlke>?A!>e_=RYdNMU3$~sZ$G(b_@fIU7F7%QLCY?NTJ&9iosUXbtTeKYZ;Nq#v` z+eFvlpRy5{>Y9R7$c@`a#;+$4p~q>v(S#2DZkpCbQcubk=P{3!D5>^kwWhK?;|$pC zFsxd9?FelR9dCWWe03e}v`G-8noXg(_{k};Fuv7z&l{aI9@J+s-;wq5ZOg{^PD>%c zhOMttc8*k*E9ty7*Ofj6nb96yn2eBoy}}K2cxQ>XosWu@HfZhhpi!?ATFSZ^Ap{q63&<9~vEw@#bzqVULm?;`idIBEya?s8o|6>h+%&>iT;d zpbWTNIluY9i1CaSFtZU)!|#1p@jGa~3G~W5aR}B&Q<9^nhSKK@_YAI0A!8(|-VVHO zBZT7%N%P+a);FRf-Mv}MRhS*lXc@0D9hv3gv6_wl$G#u3Lt@tXz%B+U*SE@)6;&fY zSVx!Dj!B27fs)*fyJMfU5s zc05nNrhD#Q*qUCOXvYT^)4dF*+4oeJHs2JSr{xGkI*yWU01Dqr5so(^75fi9w4&uu z25pQY>e=p3=1LR`Ps1SR6cb{vZ7t}pTOrI($5wIN>lo~TM*Pi4k z!u@w%n~s*9sGV@XCcXMiAvb;>wzSXtZc$;h2B?oO_(K5)mMXbFKMjS663+K1ea3tV zYm}KRy{IYZYpid4jnD>Q!{RU%hfz~X8G>rc?iHzQrgZUl(WM^t=%;I)9AK4P{n9arp>J|U z((_3*)>iO-JLYyGKF`R{Oo-1HJW8k^Gj_0oVJQQF*8s*a29VSAnfun_2N5zyv^`TB)_eXk%g z^BX!?`=~2|>`%HsjJY^ajX&Q7=_eQQ!(9HU-v8K-Qhvx_A(F zMhEcmCK5qW_NX16muPXr8?{P_qeKoa91k96L(@^olhU`(p~ErXq&!z`kT0S*W5euV zu(pjR4*4%bM}*`uZQ1TIis@)k9I9XKot3KshaA3vI%kxD{*r{(g2&h4knD;VUMP#E|N+3XnDG|EA%svi;uFiN4u5N?l6Fkjg0Z2JHK>MUPtj}mx@lnvo?2nE6A8Vyx|z=xCR5=xOtNPW@{m=`qFM6(}vGR(i7=o zr!6LTeBw(cZIeeU?Y1e!!IQ5mf5lumYL_BOJ)GHZu7K~Q^H(EC9j#E*1$RG-Oc|(v zg)AQ;)vPFP&*C%Rm0k2#hR*iM_Mh_(Pro_pYkl5g1&dsaU+Pzj8(1Qe)xU>F=DE_H z+x;&KAfb*3echT%%F3wCZ`yDdrA?NwS5n6h2<5nOmuNh5!?$F|{U#N*aG?|3&;U{z zesqJ2N9X+dcS3(C@L08La3AC@6fZi95Lmk-vDPn7IN4Y^%&Rm4fvxMc=)Dp?NfGrB z{&IA_Qr2#gA;dXWp3Gt>w%E5lmcBPjYt^WDaM~MNA7nkV#9umM<$tJ#@aA#xM${p_{_u`DQ%lKfo6mpA zbWhW>nx8rS0daP6+HSiXM~#)QByyXxo)pGIx8g)sZ_fg*Q^H_6$?g1r%yvA2b{JKG(&6L zc!K_FH8l@%uf7O7(`9j~Cpv@p-;+1ScmZq-7?z18M?7_M__Gn{2E<|;G9CE&6Z)ut zT46pD9N$Z1`a=X;A!=p*^q}=qO9IpmIDo()sfcH-)L|QrLH6y*a`A3Xqn&iIl|-h_ z%mnRY{7HLju7NEA!3!_EfkbNWk$_9AwCD#PtTk$}8sSCz7^?te1qL3tX9SmFg~3>t zL3-Dm%ECPRN@HQ0M1*}lqE&Ps7R2=)uQzuj=B_8V;(Sj_8*t_$YuF|<(Vqfd_WX_!HK_ zgV>g@q(EUG=)o72Ue zU@P#zxJ^Xqmt3bB+_B9x+dJ>j^Cz|qx!6-l1)N=@X{aoXL&0 zv-@Gr98FP}GtZFZ`SCXOD#=CQ{wlFhvr51F%!3VG_z-WNd8?5#TekfG+l#1P>rJN& z1T|~4{WtkBuI+O>r=%KHL3=FK3ajO~uaY&k|dU@4^5o}XhI8BoBX@?QFm~W;! zneVl;eIE`CuiRH0!(fqO=DX$N-#m$?XaXVp0%D}PTmfWcY_@vUilKTwz6w=Xx{*6} zb-7WZfzOSeeeIvf|8~;t1NUs?$_pGajgc<)TM{n|f) ze2}m0iA%BeXx;u!VYx39YG>x$pyD$pW!QBv9y8^NHEVdoe2DK=Dkp_heZ`CSRvJ-v z6e)6n`%w|A!<Aa>E;rmaC^l`5QJ`9w*ir&_veK+}+VN=j&t}-YT8dJtS(TmX_i`_e zDF%P{rxbBFMVv{qGKo>GXz-tk9hO1-tw;xYOOOM0YA%w*EQA&RAvRJ!rR5&uW|YPB z;GR_Vt+xC4&gAiw!q#T|9t;?SCjg@aIwYLrcPs~U0Jg8kMdWb z?B6zw{lOMyA9ehJMyEExdMzOb9+$hLiD@`yBjufDBQ3UgRn&xFP0`#Jut4+7&*^p@ z_iAGst35Lmw8<3sEt*3bP|j?}T`W2~f+yO# zwl2tsl-kfP44qWsIP8s#k?pk(#Kz4W;n=%|yO&B~eH-rmLpp?LIZNu1cR=5Z6XOX)nJZ;giV;EBX{;g+0TAkwazR`=hX4w}7Y zPng8M)Gv?3$g7;;yWcS}%EQ2AAR?;CtM3*{4$S|eH&o`)Az(enytyzG&ML6Q*?hlA z9AhUP%=n0Yr3{o6b$~buToxYwN_H{y+51oc(<%+|t$XJm7O%OnueGV@>%!znZ!Gwq z^p++(+>F}J5lmtO6!9SR48HBqJcak6vR2Rk?Uw_n6A-HJst8O+;ja-inN`H{OTUKv zzpMBEY|Hlu!7cU8`xoca+8>5E2I#|QL0U3q0%-sep+#5xk z9O9=&$;cU2dukHgSfYEv~y zNXO6?@_a^G7wHiBdYHQWGwD5P?|D5w_sfM~2=-kzR*M@Sdf5RUlG!R0LY@4>zPn0y z&#cTmJvmQEXir9vjpN5|wQm$EVmLueQp! zQ=&{uo3}a`X?tmQ8K&*5@N#y*$f|=q7-A$YvGl*l#lr>NPf5s<;p?3y>UshI6mQv0 zG(#t|sJEg$s>=Zck6w*EQ=OKyy&)H-*|&;}@uRFi8So(suHFUR?@3)OetjgwR{D8H z!M_#Fh08`fZ%tK+K~m$qM3&ZJ9El6(c+nIsdhz{|B`t%C>&^ba|B9d3j(W;}J~X&@M-tr0j|99KYsBJwdjeW;=;aQ6#mUc2d+f zu1>p!iN7?mRz9tt^x2p!D2EL52kEG*ppw4~@E zyelx#dP%~ro@p+kZ!eLs>&yKAm%D>|^2R|I}R0dAnLF@{q zpEU5??U^bNHLkP z3(T62B&1R#_Y+~_SJrXV9bi6AiyxY?2c&la7*DWBI3`>Y-^wH^$&6 zE-HA0Z*N<+Qck=%pOyxR->hKl3$g;JaNl)nbukocKLmRbvwQpb%|>7G?Z5#&7$Z+tyGh9>sQd~2dGeB|R*-jyc~-OB6= z+$k*dDMN%z&JAApttelC!q$ks1s=9!bFct;|5>Du^lo z;IC?3I6$XQ^Zd|7#Ag%=AdTRAoF6R2v0$JrMV4EoX6zBZL5I&WAo2?Cj-S46S~Zq- zeLrGZ&IfL3sHsYRi^}5nJN^YrmxD1fe)ZHUQcm;+NiW+gmWsRqanZ4Cqg2nC6NxTb z5dq2?58PY@tF4j%J0FouxAv0Db`|@5nx?NYXcR&v6JMc+Tbn#vmeVWrCwt2U^&M+K zvQgR0b&?}cJ*uDPV^*wv z^e-Qt%o`*H!%xF1pAKS=Obxm@@#H>!l029>clJlVKVlBJFP*=TLnHaavG#Mwnc{5^ zBQ1`B?*gG}F@d(nqw(|bsy(bEPV_KKBiSH4;dLh;wmu?CYq%>lG$T{;7LS!bC4Ew4 zA5|8-1B~t@3Zgm81{n*C*B|9VBaYpIpqBW+hkLIMVnDg*fs;ZYO;5zN0}cEW+{6Hs zJ9dU`eaZAC`V-+a_VW!QfQ!YM0d-3D9_%xUDv~5vLR6JE5t*8jBl3F2NW>PNBbHR} z1s7ebPCxQDB9W68PMfG^l8)!M6t`Cj3PCZeY$qlgR$UFPNfz0*E5b7BRUd6hXEiq5 zixm|bdhfg=5@7S=$7S-Zg+pM@pZk3Sg-i$I=UCV}tj|!F@WkhkS7>seD$GWwc9t%K zTZDN@zNr|TY}Lis5~|GE9i^~u+eQ~oIRTWaMXb3WcUD?N8>n$O^b5rYe*j=h;29aT znKz7WKIJw_bt{v7&`W9(yA5#?n z%^94>6kI#&yF71w41s#52vXVmL(FB{S`9#a@LE?87-Y7s@6Yk>+Vt$xn22Mhzi5T< z)!dAd`fblTt;d3%a&yqh`=^dYXq?!O_vGGBzcx>@N%fPWx3fcU2?nWb=9cIyrj+YW z_mi*uNm%aq`lXR-s5Wt{XjcEK8W+V7gjIwpXt(1!gS`~QDCGz;OlN`Y*BXN|(ap&3 zTmb8|@%z5p_q!kwfFeul3QE^G4CaW+H@M;L$o)~diqa?UHMP!$Q_AVKKvGnEJu)*e zGCYs*|!%M zzmSe>JS(C0-NUy{N*iH~K{f~5dQl(DouDEn417xo5T!-fa~V`PJU=$}81J%g@3_7- zu-Jlt`G)l0>p0QNf0K~>sa@N-AowT#5_%iQBA`4{9}H6=55Z=!Xq^*ac+R)So(ZG( z9s$fri(QS(74BmNg>O$he>N>;F_)=Sxi)_GwqaUjZ#W9NcjE%9V3=U-)gMo0@Z0AB zd=%7hp8G2?PCf;4XbB#&GGf^FPT>e1hlJy|xVF_<7f1?o!7W6IYUT?^gBT~Q^tM!u zA<0p;06={{WHvioSPf(`vxq7}o`W~(j-9LXYYa2z`w1=Kw_8MNVL()b_dIiN&_~a$ z7(SvvL@f5;oSIZ!BT)>aclJXbXJ^iXw)>>tjKmTzq+AH|{MPoAE;q>t6aZV=NY3^$DD2DQBJe%?VmT(o zvf2nHmUFAVH<5WvN#p2uy?%xmgO>k(?4A8(LnI!(PU9MIf ziwRB?%p`OiH}6}IZ`L9%h+RiIub1{x=7oFUjFLsAhc-75$26@C?==OWRbjkybZ#DD zZDls;skB%(TUwwKXe9TYyS##VGF4jM%y)59g;RAqHBl~Xf|H76x&|2;8Q-7m=)K+; zo!SpzXo+>$Zy`2ySsSSEmm)POh3V9$f5tyr~_kc?Im<_qy+m_H^mzyJ;9-sW!z znOwBOQ z#I^I{1|Re9u6 zsg5tUZitRdfu%--Fy)C{=u;6(pgHdY^C8SDN~)!aP7iO6we5)AkHQ@05z)f%_$kGj z+eoBX4>WJ>S#FTYV%+hfp>e83=FQTVM&;9bmH67`;m6LLjas?t*pYJC(4qGub))6| z0F;=-X6UMr)H4NaPj?b1^a~jjFg(W*%g8kaw`d7vASSd;@}5N&!td&oQ?VMH!yIO_2>! zu!6q*-RB+iIq6{vvSa)g#$HhfF|UvX01JdCa-!m9vRSpjv7Yh}=xBiXa=dw!;S}a( zpIOYEkP6$ff8NL`4@>$=0!e_ik-^vBpA)7$B2I#glM|Ii1%C7XiE0iHB#z#(J2VV4 zSwkWHL-j8L{I99GlXa$e_lif2q?O~l5s7$c{+Xwo{l72%f9~{>M*_5vSe60_|DVMp zi|*XDD%eP zMwj_z_2uSigshBF8AI~*r{!VS_O)bSSVW^Dp3i*b+`qS?h9Jy61u|^$!N*Q%Robt2 zyz!QY_KxVe8TefPK|T{DD#Td{A7=pG%;4-9t@%FMnl?$%SHPr`GK5Q0mLa#u*dNRl zi7Ha(bN$!3I18qWsh4=r^qU{q(0DLH9j)r>g4ai0XQ`!U+W+eB@Gb2q?L^Qo&^C+3 ziWVw~Y(mqX$6wc||Jf31@@A2Lw5HQjj=SIh#A};Mg-IHGq-Qo%R*1)`KtFZ%lv@9x zL&LX5V6`ig@UXlKa!z8hhU~!|*f7s-wS`bdu1AdMmOjlBow!5&I)GcM0E;CKHY|a0 zVPNaHQr;?oeP->NUUtfgFZBt2&qoFyize?xGIcKjK)8XLf(~|#Fx?!=E10+s_d-j0 zgp!8yXaH+00Cw4^E@nY9)*_p?MR!CkZgdc?s$OS4LFReZ4NAWBe<418T^Nrc!9Do! zp~t+zhuSFX^|Td=n^U<4$ePH8MYJX8>Dv)98eG+irGKBG6!8lz zbwZ|#{e4nUeR8bDEg{L1<3$hUb(`meiCk-J>+U0Y&AtOE>8`d;W1TnvT?7QneSl;b zI+~ytul17ZgR7rrgZ=yGN>RO`pS%Z=ZP)u-;KfL0y=}xZh-`!X4IFbCv4vH{qK9fBAX;a;DwTsf8FD_I~Bw`$#caZqSHB|b56 zABdc@IcLV?6zG4taUG4LmZX+8l&=~j=G_i7#NGvyyK!gjR-8rRyjWxlog; z%VEL&(jyJS6IYh2Q3iQNMYx9oKm(wtCd=?W@EzQbkKe_=&q@fLcr!02AsEVkKe4>p zpR!`^o>iI8$(IwZvj%}P;&0H(d}@5_H3w6BVmK-DIjuJ+kl&0CG4iIJC3a47Zdj~f zcA*2!9L3-Lk@5PvsgrRiGfa$t8> zy4d?`>r4{Zu!)LgwFsQ(W*Zls3N18WDzNj(IF{|K^{Z0;2oTkK$D-@pcs!g{NM^lZ zL2Ix6sM3&kS{|TAf28EAoxJ?5!OBXZX&jNBMM2OYU{Y0fKQ29 zdvOS<-QKyFm&xCW!ie#}aso%4K>oK&D(Xe6F>WvWwtYW@N}j4_W!vc{t&wVeng9=* z=#`QKT`SCN2Y)HX%axeBeU^iVV1et|yO<6Ek2zIIVbfUjGy7dfL=Je%`<|%+g`$Ug zG6L77t3q%cK`lD(RQI%6v1{-Lz74WBz+|C^oX7ZcRYL&?_qaoFhWd7!?|&k6wYBg( z$mh5C;C@Kd&S0}oFEw2NYsTpB+dA9)~R*ygc>kv^UArvQ26B7`n?U=3;L635W z(UjSwLQriE$%M5#!*k61&BbVEtLbfAjrSJn`yrt6$^4Ei|3UtAnCd4^7pmEqC09o1 z$>GC1haDg{eV`&P@S(Shi}YjXWSI4Q=KM_1d&f~6MYca{Wusi;iyBWS$)>0xfD1{8 zImKZ~G zdi~bEF;*DgZxo?#s@b=Q*=}1Csm!|ni?-3tO)_zxWy1!u5Sl`kmCZ&Ufj^(Cvb}1~sK;h*St&AQh zMqU69{@wsTqA5LPntl;CV_}lp)7KvA`$V|j&>QHnY3h=NIf`ENy~UMnD3*8d)(gz{ zl_rw6TZVEd8;?cyr%Y1dEp(Lhbe+K(McE$&dU6O>ld#ZXPt%UCfqDAzB? zEjkB%yCSf`ewTu*16kYdSMCWpfdA_=)DH{&4EUL%1OdvX(=d9KL4tr;;Gcuza!jAh zER*rXWkC1xP;9fRWcvBjrNGUwXeuy3jR2$jZEa1>>~qj{n7^Se{R6D^Qy1%p){6Y|0X3myW+Qua z`^Gx8zmK>)g!n%E^oE(=#Z_V=ed7RTuyPcpF_2G%_vdA{|MCRvt$hEB~GNc}?OwttMRXX4j(!qG9RAx=z2xpIca4jT zU|y%zpIMG=bvAPb`hKqlj`ShckM65@g1)m#qzOsJgfBElk@-qlUiaadTrW8 zwm+D;RufGbbLxfU+z(DjD4xHd$A{V%l_>(60|4C%-0Vwd_UvnFN&?dLa2G~5$BU(Y zn?&rUNZqd`a-l3iSI!pogRjRyjJE>WvuXpeq}8!^@!a)%soIcd+C-JG z*aPqK%y0K{-5g>g=^LqH&sT{*g>zPM`K(~jxg<3kwr%Rp5$l*R88`BWs~>t|=e;-| zQ|B6)<|KzD;r+066F{!0sUu>(oRLvCrZ!?}a(_&B0|{l~kOxvpG-VJYisOv5bDG zSSMaU=K9O#Sz*S^A;?rNM^B_W>lOCSA2m7C^S7EVVHZo9Hy`SX|14XnKy$`FdP*5V z_}q@Qc-Fsi8+0lDs%klWFK{`^CD|W@D0XLS9J%*+)P`WKyKQ`df-WambnKQt5$9_A zU-pG8*?*uK!^wz;ph{T5E~DP_ruP3#{i!sQgqu$0Dehj_1U#s-zE&*2;23BmcgB4m z(pnCJ@+r$yFFl+tGfcr{^7*31tN->8|F9hak^=$IcVhIYZr*%hm*h@IqbITuy`EJYwm64Xm>TH8-f`$$+*Wx3 zWLZ~NQauiW$qvPaM6TGgaWV%k8h=}dRJXyVOtZxjTuiYKD;sfe+3 z0yiCd1lR~;L(VQM*_$`xb-4dfqnsFi0GXRc0j3d*pO~uJIC}w!fUm&AQids&Y+D(O zV_C2~wP9xu-YgW>2x_2{Z?+k>@^JQ=>*Q4ncR#hbL&;vgq;*4;2~B|7hpHxmR8Zx$ zLQ+xi|A?uTXBV`8uM11yP6m9W7Sx`~ZEveHYyfRQcF~P?V&;!U0)O!g)i8Bo!rx*A z)8p*qfS=AXa!fEEv93tF_EX@`7}y%?Fkz_?`CEN-LJuUWm_$*JKZx;iew28r$0>bB zWbx1UzGq2?2ilzb!OA9V-h!*Nh3iq5IC$Tlz?(#A?N6nKBxrDJGrz{QKZ#Vx!v+LV zNQxW#nG_Q2!&LK1{QXKu$XeC#jPmk!bj8_;6!Z{0G4g9m3M~cgYt2{hx+4<)#M-vR zfG9nH?8$m3TQaGl&ce=;Py!8!1=knvWKZbKYx6d=^U2kmo+Nq(P?D6ASt#oG;ED2n z?EcJs93dS0hzZX00>Is4O${E>nhD(uv*Jq%`QtcSZmM}A`#8q+8AhS=(WaWAPYR^4 zTBm^8wXmUl!}E7>yEno2mv@I#Q6}BEuO!u91Z~I(5~YM82g^Eiev3JNLsKKVWP#xS z5i5x`)6M2O^?drCY%$>^*$mK06>cR<0z9I@;1UtTA;Y4Q#W8FIRDc=?hB~0ol6d`st;FtBlq7HuA*_x>TWnKD0FB` zd8PPNRdYGo*AnLnJ-ZRm)X=N$Mv0GWk7TH2+;hi7#BbhLpP=(gLRt+298rAbBZF+E z3z9u)0U%SylUFX%2hTjH1M-5rwcxvG;fJf)_QUT<57BHgfJvN0wm?;pS6oei0Ee$KnT|3VuXsuHSbOCr; zMa5JJygdmSrJ!J_it(@Eg+7Qo0oa>`+}+rhi2k%NQjF5MQU%}}cGLA$k}$g1CI|jy z`J~mR9_hf^)r`4^jR7o1q2(_f@~_;YDNB}2W(;^blsx@Rs~TF{hD_AxCVj=pB|os% z7E(jI2Z9kB0-p5?PIrD4Q?wC0Sea;J55_&aG2~_eR`Oiu91fP6ixV1;p~T$qKiHQL zP1k47?b5jV^8HKe-L>rnbH?6w3aX+CmY4_1c*6{pZ!CH(^v9SvGVyaH>yggpJAAx) zWFf7cAO5K2XB^A_^umr$1DF1BP(s)soe*wo(A92zVbiX5BI_^qgJU-iQss6GQB|Jz ze?jgVupUp9K{(-h0L5L%|2|&X-e_wOkdGvYOM;UE_?{oq4EF^| zw_1v*xv$`WQ7QLJ7=^~P?p(PJ0}~kR&zdBliyAHi^xj+oz)^edcB9=JQSN444lSu_ zh!M$WdWTw4y`mHt0}W+;e?jSfUyGW^t=e#_s>ePVYqvGjVNOhxV z{NH$vIX5Z7%^PTAVBl3(;0Q;9oq*IcRkr=urS0m!SpxvT!Rs=vi4Wts+kZk zRjsQ_zB%Dsi>q~RtTLt`H9%(0`EY8xtih3Xo;i=SJZ|=DG&pi}IyXQNYcS3>_JSod zlFr!qW1yi@k5-vs*sNk%*cfB=5FsG^)34?PnQgRrHt3M{PxP0EsT4?EkX}~IzT)WBPtAbC|O$E%Fz2f5g(W@xW{6?>?F;Bmg zetgTpE}Ei*XcBja>IiXUy4;@1f+Zk9TU3TKaD8xi_!H-sTIZ>bk(RMBJ(MRr3{^i0 zm3%S=WiPRmn>;v$Pku(^<=0t6{#(6bFG-`(3IgY!{mAoU(taK}S3qR71;O=Je-z-z z7K^9MPE~MDFc#Ayeb(sJtw!-zxmPxCbIynubd-iRCU*(_jo$HGpp7#?+p?b<6!L6;N2RHZr_ z0csC3#Q!-BfkjUOw4OAhFYE&z0+`;FKve(y`u%^wvwda-84=bwbSL%JA|7fsKQ$WF z@;lTy7;cvno6ZD;$jZAZUJ8`_S)FdZ_bj@tApS3)!oh<7><9+y?cbdW+uaJA()5}o zr`vPsxMctMJsI~u3f z;UrSn_&yRIuj0eXTq_8I-~!IwWQp+^p}t%+haDnFUo#zhMTb9+2|?S8UCLIz9+Sfc z((3h0jiT6saKg7M&Za~`18)wC`xMQw0zuQ8a>_0>`CC9}?RuUXK3a@rSGfSqKBTdd zS^#YRJRuVrD1*swyjvrmQ+p>KK{Q9iOqzZlU_gM-{W%s6`~iamC{kvXw{`SSKJY_S zQnvKpA0I(c2O&LIxdTuJPDJ{P2S9(F$q(GrJJL5tW;cnfERfK1Q9u^_hB+Y-0nr5V z7SvvpnFHuTY1kL^s#u9hU&0kXO44Z*kqKZ|UePwWD_K1SS+KVeBAc|^tis89wbt1{ z;|stk8mw>(=>9&)r;_pLfx9lpW~m5WL_eM~bmjmiY?;U;Q?D+?@WIpuOc@_1VZa`f zKyau$K+9AHIM;mKFNJ7fexu;QpOpZkZ{WMUF;EKXH=YRn%-*IQ(ww4Cp;?cR%?tN;ZLMlXT}DkMDZwT@Ib3}WCywe*R^+*+f_ zcvKsp+00((qo@(P2gMNd*eέa>|wBRloApcU3Bpm7H@%x*qzA!13{y5;7Is(V2 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�KJpx*{vkBq@}ei?3HAX;JC^% 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 z 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 z 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%0AdHV+vC{MC09-Wa_dC%; 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 z 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%0D^S_3bo7<7 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�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%0A3e+t3dD8hX7hU2J6dNd;Us-2G6B&?}YX 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 WNUKPya literal 0 HcmV?d00001 diff --git a/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts b/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts index 3325240147640..210d563696667 100644 --- a/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts +++ b/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts @@ -82,7 +82,7 @@ export interface TutorialSchema { name: string; isBeta?: boolean; shortDescription: string; - euiIconType?: IconType; // EUI icon type string, one of https://elastic.github.io/eui/#/icon; + euiIconType?: IconType; // EUI icon type string, one of https://elastic.github.io/eui/#/display/icons; longDescription: string; completionTimeMinutes?: number; previewImagePath?: string; diff --git a/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts b/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts new file mode 100644 index 0000000000000..504ede04c12d8 --- /dev/null +++ b/src/plugins/home/server/tutorials/googlecloud_metrics/index.ts @@ -0,0 +1,77 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import { TutorialsCategory } from '../../services/tutorials'; +import { + onPremInstructions, + cloudInstructions, + onPremCloudInstructions, +} from '../instructions/metricbeat_instructions'; +import { + TutorialContext, + TutorialSchema, +} from '../../services/tutorials/lib/tutorials_registry_types'; + +export function googlecloudMetricsSpecProvider(context: TutorialContext): TutorialSchema { + const moduleName = 'googlecloud'; + return { + id: 'googlecloudMetrics', + name: i18n.translate('home.tutorials.googlecloudMetrics.nameTitle', { + defaultMessage: 'Google Cloud metrics', + }), + category: TutorialsCategory.METRICS, + shortDescription: i18n.translate('home.tutorials.googlecloudMetrics.shortDescription', { + defaultMessage: + 'Fetch monitoring metrics from Google Cloud Platform using Stackdriver Monitoring API.', + }), + longDescription: i18n.translate('home.tutorials.googlecloudMetrics.longDescription', { + defaultMessage: + 'The `googlecloud` Metricbeat module fetches monitoring metrics from Google Cloud Platform using Stackdriver Monitoring API. \ +[Learn more]({learnMoreLink}).', + values: { + learnMoreLink: '{config.docs.beats.metricbeat}/metricbeat-module-googlecloud.html', + }, + }), + euiIconType: 'logoGCP', + isBeta: false, + artifacts: { + dashboards: [ + { + id: 'f40ee870-5e4a-11ea-a4f6-717338406083', + linkLabel: i18n.translate( + 'home.tutorials.googlecloudMetrics.artifacts.dashboards.linkLabel', + { + defaultMessage: 'Google Cloud metrics dashboard', + } + ), + isOverview: true, + }, + ], + exportedFields: { + documentationUrl: '{config.docs.beats.metricbeat}/exported-fields-googlecloud.html', + }, + }, + completionTimeMinutes: 10, + previewImagePath: '/plugins/home/assets/googlecloud_metrics/screenshot.png', + onPrem: onPremInstructions(moduleName, context), + elasticCloud: cloudInstructions(moduleName), + onPremElasticCloud: onPremCloudInstructions(moduleName), + }; +} diff --git a/src/plugins/home/server/tutorials/register.ts b/src/plugins/home/server/tutorials/register.ts index d13cce1c22784..c48423edb2a07 100644 --- a/src/plugins/home/server/tutorials/register.ts +++ b/src/plugins/home/server/tutorials/register.ts @@ -91,6 +91,7 @@ import { openmetricsMetricsSpecProvider } from './openmetrics_metrics'; import { oracleMetricsSpecProvider } from './oracle_metrics'; import { iisMetricsSpecProvider } from './iis_metrics'; import { azureLogsSpecProvider } from './azure_logs'; +import { googlecloudMetricsSpecProvider } from './googlecloud_metrics'; export const builtInTutorials = [ systemLogsSpecProvider, @@ -168,4 +169,5 @@ export const builtInTutorials = [ oracleMetricsSpecProvider, iisMetricsSpecProvider, azureLogsSpecProvider, + googlecloudMetricsSpecProvider, ]; From 97ca7bfc2ea0586fcc873b075fda8230f29f9537 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2020 17:56:37 +0200 Subject: [PATCH 36/59] Update dependency @elastic/charts to v19.7.0 (#69791) Co-authored-by: Renovate Bot --- package.json | 2 +- packages/kbn-ui-shared-deps/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3c15d9ee3c97b..8e51f9207eaf1 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.10.1", "@babel/register": "^7.10.1", "@elastic/apm-rum": "^5.2.0", - "@elastic/charts": "19.6.3", + "@elastic/charts": "19.7.0", "@elastic/datemath": "5.0.3", "@elastic/ems-client": "7.9.3", "@elastic/eui": "24.1.0", diff --git a/packages/kbn-ui-shared-deps/package.json b/packages/kbn-ui-shared-deps/package.json index ff09d8d4fc5ab..5f306cd5128b9 100644 --- a/packages/kbn-ui-shared-deps/package.json +++ b/packages/kbn-ui-shared-deps/package.json @@ -9,7 +9,7 @@ "kbn:watch": "node scripts/build --dev --watch" }, "dependencies": { - "@elastic/charts": "19.6.3", + "@elastic/charts": "19.7.0", "@elastic/eui": "24.1.0", "@elastic/numeral": "^2.5.0", "@kbn/i18n": "1.0.0", diff --git a/yarn.lock b/yarn.lock index 02f7e90ab7d24..7e44780389531 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2144,10 +2144,10 @@ dependencies: "@elastic/apm-rum-core" "^5.3.0" -"@elastic/charts@19.6.3": - version "19.6.3" - resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-19.6.3.tgz#c23a1d7a8e245b1a800a3a4ef5fc4378b0da5e74" - integrity sha512-lB+rOODUKYZvsWCAcCxtAu8UxdZ2yIjZs+cjXwO1SlngY+jo+gc6XoEZG4kAczRPcr6cMdHesZ8LmFr3Enle5Q== +"@elastic/charts@19.7.0": + version "19.7.0" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-19.7.0.tgz#86cdee072d70e641135de99646c90359992bfdf0" + integrity sha512-oNAPOpI9OkuX/pWL+SGShcmdAUB1mwbOyJnp9/PHFqXtARg3aaiTDD0olZUuynGKd6DWnN8mEAiwoe7nsWGP9g== dependencies: "@popperjs/core" "^2.4.0" chroma-js "^2.1.0" From 7ec48fd9662ad7c8898fe3d9162533f8dbafcfc7 Mon Sep 17 00:00:00 2001 From: Kerry Gallagher Date: Fri, 3 Jul 2020 16:57:59 +0100 Subject: [PATCH 37/59] [Logs UI] Reorganise log rate anomaly table (#69516) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove top level chart Remove top level anomalies chart * Refactor table columns to accomodate new formatting * Tyical vs actual stats in expanded row * Format message based on actual vs typical * Start fleshing out log rate examples endpoint and lib methods * Use the real document ID for expanded rows so React doesn't re-render content * Add all data fetching resources for log entry rate examples * Move log entry example and severity indicator components to a shared location * Render examples for log rate * Add severity indicator * Styling tweaks * Move horizontal button popover menu to a shared components so log rate table can use it * Revert "Move horizontal button popover menu to a shared components so log rate table can use it" This reverts commit f80db5984d74b0e2203d0f7a09ed5ee59d9a39a8. * Add "view in stream" and "view in anomaly explorer" links * Hook links into the new context menu component * Add log column headers and add styling tweaks etc * Fix translations * Tweak comments * Chart tweaks * Update x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/expanded_row.tsx Co-authored-by: Felix Stürmer * PR amendments - Pass href to context menu items - Fix start and end times used for example logs - Use "fewer" rather than "less" * Update x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts Co-authored-by: Felix Stürmer * Update x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts Co-authored-by: Felix Stürmer * PR amendments - Fix typechecking - Add an empty log example column header to account for the context menu - Add anomaly start time to rows Co-authored-by: Felix Stürmer --- .../http_api/log_analysis/results/index.ts | 1 + .../log_analysis/results/log_entry_rate.ts | 3 + .../results/log_entry_rate_examples.ts | 77 +++++ .../anomaly_severity_indicator.tsx | 2 +- .../log_entry_examples/log_entry_examples.tsx | 49 +++ .../log_entry_examples_empty_indicator.tsx} | 6 +- .../log_entry_examples_failure_indicator.tsx} | 8 +- .../log_entry_examples_loading_indicator.tsx} | 2 +- .../log_text_stream/column_headers.tsx | 4 +- .../logging/log_text_stream/index.ts | 8 +- .../log_entry_context_menu.tsx | 9 +- .../anomaly_severity_indicator_list.tsx | 2 +- .../top_categories/category_details_row.tsx | 49 ++- .../sections/anomalies/expanded_row.tsx | 189 +++++++----- .../sections/anomalies/index.tsx | 58 +--- .../sections/anomalies/log_entry_example.tsx | 291 ++++++++++++++++++ .../sections/anomalies/table.tsx | 210 +++++++++---- .../get_log_entry_rate_examples.ts | 47 +++ .../use_log_entry_rate_examples.ts | 63 ++++ .../use_log_entry_rate_results.ts | 27 ++ x-pack/plugins/infra/server/infra_server.ts | 2 + .../log_analysis/log_entry_rate_analysis.ts | 151 ++++++++- .../log_analysis/queries/log_entry_rate.ts | 1 + .../queries/log_entry_rate_examples.ts | 72 +++++ .../routes/log_analysis/results/index.ts | 1 + .../results/log_entry_rate_examples.ts | 82 +++++ .../translations/translations/ja-JP.json | 10 - .../translations/translations/zh-CN.json | 10 - 28 files changed, 1177 insertions(+), 257 deletions(-) create mode 100644 x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate_examples.ts rename x-pack/plugins/infra/public/{pages/logs/log_entry_categories/sections/top_categories => components/logging/log_analysis_results}/anomaly_severity_indicator.tsx (95%) create mode 100644 x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx rename x-pack/plugins/infra/public/{pages/logs/log_entry_categories/sections/top_categories/category_example_messages_empty_indicator.tsx => components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx} (81%) rename x-pack/plugins/infra/public/{pages/logs/log_entry_categories/sections/top_categories/category_example_messages_failure_indicator.tsx => components/logging/log_entry_examples/log_entry_examples_failure_indicator.tsx} (75%) rename x-pack/plugins/infra/public/{pages/logs/log_entry_categories/sections/top_categories/category_example_messages_loading_indicator.tsx => components/logging/log_entry_examples/log_entry_examples_loading_indicator.tsx} (89%) create mode 100644 x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_rate_examples.ts create mode 100644 x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_examples.ts create mode 100644 x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate_examples.ts create mode 100644 x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts diff --git a/x-pack/plugins/infra/common/http_api/log_analysis/results/index.ts b/x-pack/plugins/infra/common/http_api/log_analysis/results/index.ts index 15615046bdd6a..30b6be435837b 100644 --- a/x-pack/plugins/infra/common/http_api/log_analysis/results/index.ts +++ b/x-pack/plugins/infra/common/http_api/log_analysis/results/index.ts @@ -8,3 +8,4 @@ export * from './log_entry_categories'; export * from './log_entry_category_datasets'; export * from './log_entry_category_examples'; export * from './log_entry_rate'; +export * from './log_entry_rate_examples'; diff --git a/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate.ts b/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate.ts index dfc3d2aabd11a..b7e8a49735152 100644 --- a/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate.ts +++ b/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate.ts @@ -30,6 +30,7 @@ export type GetLogEntryRateRequestPayload = rt.TypeOf; + export const logEntryRatePartitionRT = rt.type({ analysisBucketCount: rt.number, anomalies: rt.array(logEntryRateAnomalyRT), diff --git a/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate_examples.ts b/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate_examples.ts new file mode 100644 index 0000000000000..700f87ec3beb1 --- /dev/null +++ b/x-pack/plugins/infra/common/http_api/log_analysis/results/log_entry_rate_examples.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; + +import { + badRequestErrorRT, + forbiddenErrorRT, + timeRangeRT, + routeTimingMetadataRT, +} from '../../shared'; + +export const LOG_ANALYSIS_GET_LOG_ENTRY_RATE_EXAMPLES_PATH = + '/api/infra/log_analysis/results/log_entry_rate_examples'; + +/** + * request + */ + +export const getLogEntryRateExamplesRequestPayloadRT = rt.type({ + data: rt.type({ + // the dataset to fetch the log rate examples from + dataset: rt.string, + // the number of examples to fetch + exampleCount: rt.number, + // the id of the source configuration + sourceId: rt.string, + // the time range to fetch the log rate examples from + timeRange: timeRangeRT, + }), +}); + +export type GetLogEntryRateExamplesRequestPayload = rt.TypeOf< + typeof getLogEntryRateExamplesRequestPayloadRT +>; + +/** + * response + */ + +const logEntryRateExampleRT = rt.type({ + id: rt.string, + dataset: rt.string, + message: rt.string, + timestamp: rt.number, + tiebreaker: rt.number, +}); + +export type LogEntryRateExample = rt.TypeOf; + +export const getLogEntryRateExamplesSuccessReponsePayloadRT = rt.intersection([ + rt.type({ + data: rt.type({ + examples: rt.array(logEntryRateExampleRT), + }), + }), + rt.partial({ + timing: routeTimingMetadataRT, + }), +]); + +export type GetLogEntryRateExamplesSuccessReponsePayload = rt.TypeOf< + typeof getLogEntryRateExamplesSuccessReponsePayloadRT +>; + +export const getLogEntryRateExamplesResponsePayloadRT = rt.union([ + getLogEntryRateExamplesSuccessReponsePayloadRT, + badRequestErrorRT, + forbiddenErrorRT, +]); + +export type GetLogEntryRateExamplesResponsePayload = rt.TypeOf< + typeof getLogEntryRateExamplesResponsePayloadRT +>; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator.tsx b/x-pack/plugins/infra/public/components/logging/log_analysis_results/anomaly_severity_indicator.tsx similarity index 95% rename from x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator.tsx rename to x-pack/plugins/infra/public/components/logging/log_analysis_results/anomaly_severity_indicator.tsx index e50231316fb5a..e85145b83a30b 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_analysis_results/anomaly_severity_indicator.tsx @@ -10,7 +10,7 @@ import { formatAnomalyScore, getSeverityCategoryForScore, ML_SEVERITY_COLORS, -} from '../../../../../../common/log_analysis'; +} from '../../../../common/log_analysis'; export const AnomalySeverityIndicator: React.FunctionComponent<{ anomalyScore: number; diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx new file mode 100644 index 0000000000000..2ec9922d94555 --- /dev/null +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { euiStyled } from '../../../../../observability/public'; +import { LogEntryExampleMessagesEmptyIndicator } from './log_entry_examples_empty_indicator'; +import { LogEntryExampleMessagesFailureIndicator } from './log_entry_examples_failure_indicator'; +import { LogEntryExampleMessagesLoadingIndicator } from './log_entry_examples_loading_indicator'; + +interface Props { + isLoading: boolean; + hasFailedLoading: boolean; + hasResults: boolean; + exampleCount: number; + onReload: () => void; +} +export const LogEntryExampleMessages: React.FunctionComponent = ({ + isLoading, + hasFailedLoading, + exampleCount, + hasResults, + onReload, + children, +}) => { + return ( + + {isLoading ? ( + + ) : hasFailedLoading ? ( + + ) : !hasResults ? ( + + ) : ( + children + )} + + ); +}; + +const Wrapper = euiStyled.div` + align-items: stretch; + flex-direction: column; + flex: 1 0 0%; + overflow: hidden; +`; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_empty_indicator.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx similarity index 81% rename from x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_empty_indicator.tsx rename to x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx index ac572a5f6cf21..1d6028ed032a2 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_empty_indicator.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx @@ -7,20 +7,20 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; -export const CategoryExampleMessagesEmptyIndicator: React.FunctionComponent<{ +export const LogEntryExampleMessagesEmptyIndicator: React.FunctionComponent<{ onReload: () => void; }> = ({ onReload }) => ( diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_failure_indicator.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_failure_indicator.tsx similarity index 75% rename from x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_failure_indicator.tsx rename to x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_failure_indicator.tsx index 7865dcd0226e0..dca786bce3b71 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_failure_indicator.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_failure_indicator.tsx @@ -7,22 +7,22 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiTextColor } from '@elastic/eui import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; -export const CategoryExampleMessagesFailureIndicator: React.FunctionComponent<{ +export const LogEntryExampleMessagesFailureIndicator: React.FunctionComponent<{ onRetry: () => void; }> = ({ onRetry }) => ( diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_loading_indicator.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_loading_indicator.tsx similarity index 89% rename from x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_loading_indicator.tsx rename to x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_loading_indicator.tsx index cad87a96a1326..8217b6ef80960 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_example_messages_loading_indicator.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_loading_indicator.tsx @@ -7,7 +7,7 @@ import { EuiLoadingContent } from '@elastic/eui'; import React from 'react'; -export const CategoryExampleMessagesLoadingIndicator: React.FunctionComponent<{ +export const LogEntryExampleMessagesLoadingIndicator: React.FunctionComponent<{ exampleCount: number; }> = ({ exampleCount }) => ( <> diff --git a/x-pack/plugins/infra/public/components/logging/log_text_stream/column_headers.tsx b/x-pack/plugins/infra/public/components/logging/log_text_stream/column_headers.tsx index bc592c71898b0..c50a82006941a 100644 --- a/x-pack/plugins/infra/public/components/logging/log_text_stream/column_headers.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_text_stream/column_headers.tsx @@ -68,7 +68,7 @@ export const LogColumnHeaders: React.FunctionComponent<{ ); }; -const LogColumnHeader: React.FunctionComponent<{ +export const LogColumnHeader: React.FunctionComponent<{ columnWidth: LogEntryColumnWidth; 'data-test-subj'?: string; }> = ({ children, columnWidth, 'data-test-subj': dataTestSubj }) => ( @@ -77,7 +77,7 @@ const LogColumnHeader: React.FunctionComponent<{ ); -const LogColumnHeadersWrapper = euiStyled.div.attrs((props) => ({ +export const LogColumnHeadersWrapper = euiStyled.div.attrs((props) => ({ role: props.role ?? 'row', }))` align-items: stretch; diff --git a/x-pack/plugins/infra/public/components/logging/log_text_stream/index.ts b/x-pack/plugins/infra/public/components/logging/log_text_stream/index.ts index dbf162171cac3..bc687baf7c466 100644 --- a/x-pack/plugins/infra/public/components/logging/log_text_stream/index.ts +++ b/x-pack/plugins/infra/public/components/logging/log_text_stream/index.ts @@ -4,9 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ -export { LogEntryColumn, LogEntryColumnWidths, useColumnWidths } from './log_entry_column'; +export { + LogEntryColumn, + LogEntryColumnWidths, + useColumnWidths, + iconColumnId, +} from './log_entry_column'; export { LogEntryFieldColumn } from './log_entry_field_column'; export { LogEntryMessageColumn } from './log_entry_message_column'; export { LogEntryRowWrapper } from './log_entry_row'; export { LogEntryTimestampColumn } from './log_entry_timestamp_column'; export { ScrollableLogTextStreamView } from './scrollable_log_text_stream_view'; +export { LogEntryContextMenu } from './log_entry_context_menu'; diff --git a/x-pack/plugins/infra/public/components/logging/log_text_stream/log_entry_context_menu.tsx b/x-pack/plugins/infra/public/components/logging/log_text_stream/log_entry_context_menu.tsx index 4aa81846d90ef..adc1ce4d8c9fd 100644 --- a/x-pack/plugins/infra/public/components/logging/log_text_stream/log_entry_context_menu.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_text_stream/log_entry_context_menu.tsx @@ -13,7 +13,8 @@ import { LogEntryColumnContent } from './log_entry_column'; interface LogEntryContextMenuItem { label: string; - onClick: () => void; + onClick: (e: React.MouseEvent) => void; + href?: string; } interface LogEntryContextMenuProps { @@ -40,9 +41,9 @@ export const LogEntryContextMenu: React.FC = ({ }) => { const closeMenuAndCall = useMemo(() => { return (callback: LogEntryContextMenuItem['onClick']) => { - return () => { + return (e: React.MouseEvent) => { onClose(); - callback(); + callback(e); }; }; }, [onClose]); @@ -60,7 +61,7 @@ export const LogEntryContextMenu: React.FC = ({ const wrappedItems = useMemo(() => { return items.map((item, i) => ( - + {item.label} )); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator_list.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator_list.tsx index dafaa37006be0..47bb31ab4ae3e 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator_list.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/anomaly_severity_indicator_list.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { LogEntryCategoryDataset } from '../../../../../../common/http_api/log_analysis'; import { getFriendlyNameForPartitionId } from '../../../../../../common/log_analysis'; -import { AnomalySeverityIndicator } from './anomaly_severity_indicator'; +import { AnomalySeverityIndicator } from '../../../../../components/logging/log_analysis_results/anomaly_severity_indicator'; export const AnomalySeverityIndicatorList: React.FunctionComponent<{ datasets: LogEntryCategoryDataset[]; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_details_row.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_details_row.tsx index c0728c0a55483..d939d6738c533 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_details_row.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/sections/top_categories/category_details_row.tsx @@ -5,14 +5,10 @@ */ import React, { useEffect } from 'react'; - -import { euiStyled } from '../../../../../../../observability/public'; -import { TimeRange } from '../../../../../../common/http_api/shared'; import { useLogEntryCategoryExamples } from '../../use_log_entry_category_examples'; +import { LogEntryExampleMessages } from '../../../../../components/logging/log_entry_examples/log_entry_examples'; +import { TimeRange } from '../../../../../../common/http_api/shared'; import { CategoryExampleMessage } from './category_example_message'; -import { CategoryExampleMessagesEmptyIndicator } from './category_example_messages_empty_indicator'; -import { CategoryExampleMessagesFailureIndicator } from './category_example_messages_failure_indicator'; -import { CategoryExampleMessagesLoadingIndicator } from './category_example_messages_loading_indicator'; const exampleCount = 5; @@ -39,30 +35,21 @@ export const CategoryDetailsRow: React.FunctionComponent<{ }, [getLogEntryCategoryExamples]); return ( - - {isLoadingLogEntryCategoryExamples ? ( - - ) : hasFailedLoadingLogEntryCategoryExamples ? ( - - ) : logEntryCategoryExamples.length === 0 ? ( - - ) : ( - logEntryCategoryExamples.map((categoryExample, categoryExampleIndex) => ( - - )) - )} - + 0} + exampleCount={exampleCount} + onReload={getLogEntryCategoryExamples} + > + {logEntryCategoryExamples.map((example, exampleIndex) => ( + + ))} + ); }; - -const CategoryExampleMessages = euiStyled.div` - align-items: stretch; - flex-direction: column; - flex: 1 0 0%; - overflow: hidden; -`; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/expanded_row.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/expanded_row.tsx index a1d3d56beee2c..c527b8c49d099 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/expanded_row.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/expanded_row.tsx @@ -4,86 +4,129 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiStat } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiStat } from '@elastic/eui'; import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; -import React, { useMemo } from 'react'; - +import React from 'react'; +import { useMount } from 'react-use'; import { TimeRange } from '../../../../../../common/http_api/shared/time_range'; -import { AnalyzeInMlButton } from '../../../../../components/logging/log_analysis_results'; -import { LogEntryRateResults } from '../../use_log_entry_rate_results'; -import { - getAnnotationsForPartition, - getLogEntryRateSeriesForPartition, - getTotalNumberOfLogEntriesForPartition, -} from '../helpers/data_formatters'; -import { AnomaliesChart } from './chart'; +import { AnomalyRecord } from '../../use_log_entry_rate_results'; +import { useLogEntryRateModuleContext } from '../../use_log_entry_rate_module'; +import { useLogEntryRateExamples } from '../../use_log_entry_rate_examples'; +import { LogEntryExampleMessages } from '../../../../../components/logging/log_entry_examples/log_entry_examples'; +import { LogEntryRateExampleMessage, LogEntryRateExampleMessageHeaders } from './log_entry_example'; +import { euiStyled } from '../../../../../../../observability/public'; + +const EXAMPLE_COUNT = 5; + +const examplesTitle = i18n.translate('xpack.infra.logs.analysis.anomaliesTableExamplesTitle', { + defaultMessage: 'Example log entries', +}); export const AnomaliesTableExpandedRow: React.FunctionComponent<{ - partitionId: string; - results: LogEntryRateResults; - setTimeRange: (timeRange: TimeRange) => void; + anomaly: AnomalyRecord; timeRange: TimeRange; jobId: string; -}> = ({ results, timeRange, setTimeRange, partitionId, jobId }) => { - const logEntryRateSeries = useMemo( - () => - results?.histogramBuckets ? getLogEntryRateSeriesForPartition(results, partitionId) : [], - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - [results, partitionId] - ); - const anomalyAnnotations = useMemo( - () => - results?.histogramBuckets - ? getAnnotationsForPartition(results, partitionId) - : { - warning: [], - minor: [], - major: [], - critical: [], - }, - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - [results, partitionId] - ); - const totalNumberOfLogEntries = useMemo( - () => - results?.histogramBuckets - ? getTotalNumberOfLogEntriesForPartition(results, partitionId) - : undefined, - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - [results, partitionId] - ); +}> = ({ anomaly, timeRange, jobId }) => { + const { + sourceConfiguration: { sourceId }, + } = useLogEntryRateModuleContext(); + + const { + getLogEntryRateExamples, + hasFailedLoadingLogEntryRateExamples, + isLoadingLogEntryRateExamples, + logEntryRateExamples, + } = useLogEntryRateExamples({ + dataset: anomaly.partitionId, + endTime: anomaly.startTime + anomaly.duration, + exampleCount: EXAMPLE_COUNT, + sourceId, + startTime: anomaly.startTime, + }); + + useMount(() => { + getLogEntryRateExamples(); + }); + return ( - - - - - - - - - - - - - - - + <> + + + +

{examplesTitle}

+ + 0} + exampleCount={EXAMPLE_COUNT} + onReload={getLogEntryRateExamples} + > + {logEntryRateExamples.length > 0 ? ( + <> + + {logEntryRateExamples.map((example, exampleIndex) => ( + + ))} + + ) : null} + +
+ + + + + + + + + + + + ); }; + +const ExpandedContentWrapper = euiStyled(EuiFlexGroup)` + overflow: hidden; +`; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/index.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/index.tsx index 5ff3f318629f4..a2d37455eac1d 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/index.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/index.tsx @@ -9,23 +9,15 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer, - EuiStat, EuiTitle, EuiLoadingSpinner, } from '@elastic/eui'; -import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; import React, { useMemo } from 'react'; - import { euiStyled } from '../../../../../../../observability/public'; import { LogEntryRateResults } from '../../use_log_entry_rate_results'; import { TimeRange } from '../../../../../../common/http_api/shared/time_range'; -import { formatAnomalyScore } from '../../../../../../common/log_analysis'; -import { - getAnnotationsForAll, - getLogEntryRateCombinedSeries, - getTopAnomalyScoreAcrossAllPartitions, -} from '../helpers/data_formatters'; +import { getAnnotationsForAll, getLogEntryRateCombinedSeries } from '../helpers/data_formatters'; import { AnomaliesChart } from './chart'; import { AnomaliesTable } from './table'; import { RecreateJobButton } from '../../../../../components/logging/log_analysis_job_status'; @@ -67,14 +59,6 @@ export const AnomaliesResults: React.FunctionComponent<{ [results] ); - const topAnomalyScore = useMemo( - () => - results && results.histogramBuckets - ? getTopAnomalyScoreAcrossAllPartitions(results) - : undefined, - [results] - ); - return ( <> @@ -124,7 +108,7 @@ export const AnomaliesResults: React.FunctionComponent<{ ) : ( <> - + - - - - ; + interface ParsedAnnotationDetails { anomalyScoresByPartition: Array<{ partitionName: string; maximumAnomalyScore: number }>; } @@ -222,10 +189,3 @@ const renderAnnotationTooltip = (details?: string) => { const TooltipWrapper = euiStyled('div')` white-space: nowrap; `; - -const loadingAriaLabel = i18n.translate( - 'xpack.infra.logs.analysis.anomaliesSectionLoadingAriaLabel', - { defaultMessage: 'Loading anomalies' } -); - -const LoadingOverlayContent = () => ; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx new file mode 100644 index 0000000000000..96f665b3693ca --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/log_entry_example.tsx @@ -0,0 +1,291 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useMemo, useCallback, useState } from 'react'; +import moment from 'moment'; +import { encode } from 'rison-node'; +import { i18n } from '@kbn/i18n'; +import { euiStyled } from '../../../../../../../observability/public'; +import { getFriendlyNameForPartitionId } from '../../../../../../common/log_analysis'; +import { + LogEntryColumn, + LogEntryFieldColumn, + LogEntryMessageColumn, + LogEntryRowWrapper, + LogEntryTimestampColumn, + LogEntryContextMenu, + LogEntryColumnWidths, + iconColumnId, +} from '../../../../../components/logging/log_text_stream'; +import { + LogColumnHeadersWrapper, + LogColumnHeader, +} from '../../../../../components/logging/log_text_stream/column_headers'; +import { useLinkProps } from '../../../../../hooks/use_link_props'; +import { TimeRange } from '../../../../../../common/http_api/shared/time_range'; +import { partitionField } from '../../../../../../common/log_analysis/job_parameters'; +import { getEntitySpecificSingleMetricViewerLink } from '../../../../../components/logging/log_analysis_results/analyze_in_ml_button'; +import { LogEntryRateExample } from '../../../../../../common/http_api/log_analysis/results'; +import { + LogColumnConfiguration, + isTimestampLogColumnConfiguration, + isFieldLogColumnConfiguration, + isMessageLogColumnConfiguration, +} from '../../../../../utils/source_configuration'; +import { localizedDate } from '../../../../../../common/formatters/datetime'; + +export const exampleMessageScale = 'medium' as const; +export const exampleTimestampFormat = 'time' as const; + +const MENU_LABEL = i18n.translate('xpack.infra.logAnomalies.logEntryExamplesMenuLabel', { + defaultMessage: 'View actions for log entry', +}); + +const VIEW_IN_STREAM_LABEL = i18n.translate( + 'xpack.infra.logs.analysis.logEntryExamplesViewInStreamLabel', + { + defaultMessage: 'View in stream', + } +); + +const VIEW_ANOMALY_IN_ML_LABEL = i18n.translate( + 'xpack.infra.logs.analysis.logEntryExamplesViewAnomalyInMlLabel', + { + defaultMessage: 'View anomaly in machine learning', + } +); + +type Props = LogEntryRateExample & { + timeRange: TimeRange; + jobId: string; +}; + +export const LogEntryRateExampleMessage: React.FunctionComponent = ({ + id, + dataset, + message, + timestamp, + tiebreaker, + timeRange, + jobId, +}) => { + const [isHovered, setIsHovered] = useState(false); + const [isMenuOpen, setIsMenuOpen] = useState(false); + const openMenu = useCallback(() => setIsMenuOpen(true), []); + const closeMenu = useCallback(() => setIsMenuOpen(false), []); + const setItemIsHovered = useCallback(() => setIsHovered(true), []); + const setItemIsNotHovered = useCallback(() => setIsHovered(false), []); + + // the dataset must be encoded for the field column and the empty value must + // be turned into a user-friendly value + const encodedDatasetFieldValue = useMemo( + () => JSON.stringify(getFriendlyNameForPartitionId(dataset)), + [dataset] + ); + + const viewInStreamLinkProps = useLinkProps({ + app: 'logs', + pathname: 'stream', + search: { + logPosition: encode({ + end: moment(timeRange.endTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), + position: { tiebreaker, time: timestamp }, + start: moment(timeRange.startTime).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), + streamLive: false, + }), + flyoutOptions: encode({ + surroundingLogsId: id, + }), + logFilter: encode({ + expression: `${partitionField}: ${dataset}`, + kind: 'kuery', + }), + }, + }); + + const viewAnomalyInMachineLearningLinkProps = useLinkProps( + getEntitySpecificSingleMetricViewerLink(jobId, timeRange, { + [partitionField]: dataset, + }) + ); + + const menuItems = useMemo(() => { + if (!viewInStreamLinkProps.onClick || !viewAnomalyInMachineLearningLinkProps.onClick) { + return undefined; + } + + return [ + { + label: VIEW_IN_STREAM_LABEL, + onClick: viewInStreamLinkProps.onClick, + href: viewInStreamLinkProps.href, + }, + { + label: VIEW_ANOMALY_IN_ML_LABEL, + onClick: viewAnomalyInMachineLearningLinkProps.onClick, + href: viewAnomalyInMachineLearningLinkProps.href, + }, + ]; + }, [viewInStreamLinkProps, viewAnomalyInMachineLearningLinkProps]); + + return ( + + + + + + + + + + + + {(isHovered || isMenuOpen) && menuItems ? ( + + ) : null} + + + ); +}; + +const noHighlights: never[] = []; +const timestampColumnId = 'log-entry-example-timestamp-column' as const; +const messageColumnId = 'log-entry-examples-message-column' as const; +const datasetColumnId = 'log-entry-examples-dataset-column' as const; + +const DETAIL_FLYOUT_ICON_MIN_WIDTH = 32; +const COLUMN_PADDING = 8; + +export const columnWidths: LogEntryColumnWidths = { + [timestampColumnId]: { + growWeight: 0, + shrinkWeight: 0, + // w_score - w_padding = 130 px - 8 px + baseWidth: '122px', + }, + [messageColumnId]: { + growWeight: 1, + shrinkWeight: 0, + baseWidth: '0%', + }, + [datasetColumnId]: { + growWeight: 0, + shrinkWeight: 0, + baseWidth: '250px', + }, + [iconColumnId]: { + growWeight: 0, + shrinkWeight: 0, + baseWidth: `${DETAIL_FLYOUT_ICON_MIN_WIDTH + 2 * COLUMN_PADDING}px`, + }, +}; + +export const exampleMessageColumnConfigurations: LogColumnConfiguration[] = [ + { + timestampColumn: { + id: timestampColumnId, + }, + }, + { + messageColumn: { + id: messageColumnId, + }, + }, + { + fieldColumn: { + field: 'event.dataset', + id: datasetColumnId, + }, + }, +]; + +export const LogEntryRateExampleMessageHeaders: React.FunctionComponent<{ + dateTime: number; +}> = ({ dateTime }) => { + return ( + + <> + {exampleMessageColumnConfigurations.map((columnConfiguration) => { + if (isTimestampLogColumnConfiguration(columnConfiguration)) { + return ( + + {localizedDate(dateTime)} + + ); + } else if (isMessageLogColumnConfiguration(columnConfiguration)) { + return ( + + Message + + ); + } else if (isFieldLogColumnConfiguration(columnConfiguration)) { + return ( + + {columnConfiguration.fieldColumn.field} + + ); + } + })} + + {null} + + + + ); +}; + +const LogEntryRateExampleMessageHeadersWrapper = euiStyled(LogColumnHeadersWrapper)` + border-bottom: none; + box-shadow: none; + padding-right: 0; +`; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx index a9090a90c0b92..c70a456bfe06a 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx @@ -6,10 +6,10 @@ import { EuiBasicTable, EuiBasicTableColumn } from '@elastic/eui'; import { RIGHT_ALIGNMENT } from '@elastic/eui/lib/services'; +import moment from 'moment'; import { i18n } from '@kbn/i18n'; import React, { useCallback, useMemo, useState } from 'react'; import { useSet } from 'react-use'; -import { euiStyled } from '../../../../../../../observability/public'; import { TimeRange } from '../../../../../../common/http_api/shared/time_range'; import { formatAnomalyScore, @@ -18,11 +18,16 @@ import { import { RowExpansionButton } from '../../../../../components/basic_table'; import { LogEntryRateResults } from '../../use_log_entry_rate_results'; import { AnomaliesTableExpandedRow } from './expanded_row'; +import { AnomalySeverityIndicator } from '../../../../../components/logging/log_analysis_results/anomaly_severity_indicator'; +import { useKibanaUiSetting } from '../../../../../utils/use_kibana_ui_setting'; interface TableItem { - partitionName: string; - partitionId: string; - topAnomalyScore: number; + id: string; + dataset: string; + datasetName: string; + anomalyScore: number; + anomalyMessage: string; + startTime: number; } interface SortingOptions { @@ -32,73 +37,132 @@ interface SortingOptions { }; } -const partitionColumnName = i18n.translate( - 'xpack.infra.logs.analysis.anomaliesTablePartitionColumnName', +interface PaginationOptions { + pageIndex: number; + pageSize: number; + totalItemCount: number; + pageSizeOptions: number[]; + hidePerPageOptions: boolean; +} + +const anomalyScoreColumnName = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableAnomalyScoreColumnName', + { + defaultMessage: 'Anomaly score', + } +); + +const anomalyMessageColumnName = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableAnomalyMessageName', { - defaultMessage: 'Partition', + defaultMessage: 'Anomaly', } ); -const maxAnomalyScoreColumnName = i18n.translate( - 'xpack.infra.logs.analysis.anomaliesTableMaxAnomalyScoreColumnName', +const anomalyStartTimeColumnName = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableAnomalyStartTime', { - defaultMessage: 'Max anomaly score', + defaultMessage: 'Start time', } ); +const datasetColumnName = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableAnomalyDatasetName', + { + defaultMessage: 'Dataset', + } +); + +const moreThanExpectedAnomalyMessage = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableMoreThanExpectedAnomalyMessage', + { + defaultMessage: 'More log messages in this dataset than expected', + } +); + +const fewerThanExpectedAnomalyMessage = i18n.translate( + 'xpack.infra.logs.analysis.anomaliesTableFewerThanExpectedAnomalyMessage', + { + defaultMessage: 'Fewer log messages in this dataset than expected', + } +); + +const getAnomalyMessage = (actualRate: number, typicalRate: number): string => { + return actualRate < typicalRate + ? fewerThanExpectedAnomalyMessage + : moreThanExpectedAnomalyMessage; +}; + export const AnomaliesTable: React.FunctionComponent<{ results: LogEntryRateResults; setTimeRange: (timeRange: TimeRange) => void; timeRange: TimeRange; jobId: string; }> = ({ results, timeRange, setTimeRange, jobId }) => { + const [dateFormat] = useKibanaUiSetting('dateFormat', 'Y-MM-DD HH:mm:ss'); + const tableItems: TableItem[] = useMemo(() => { - return Object.entries(results.partitionBuckets).map(([key, value]) => { + return results.anomalies.map((anomaly) => { return { - // The real ID - partitionId: key, - // Note: EUI's table expanded rows won't work with a key of '' in itemIdToExpandedRowMap, so we have to use the friendly name here - partitionName: getFriendlyNameForPartitionId(key), - topAnomalyScore: formatAnomalyScore(value.topAnomalyScore), + id: anomaly.id, + dataset: anomaly.partitionId, + datasetName: getFriendlyNameForPartitionId(anomaly.partitionId), + anomalyScore: formatAnomalyScore(anomaly.anomalyScore), + anomalyMessage: getAnomalyMessage(anomaly.actualLogEntryRate, anomaly.typicalLogEntryRate), + startTime: anomaly.startTime, }; }); }, [results]); - const [expandedDatasetIds, { add: expandDataset, remove: collapseDataset }] = useSet( - new Set() - ); + const [expandedIds, { add: expandId, remove: collapseId }] = useSet(new Set()); const expandedDatasetRowContents = useMemo( () => - [...expandedDatasetIds].reduce>( - (aggregatedDatasetRows, datasetId) => { - return { - ...aggregatedDatasetRows, - [getFriendlyNameForPartitionId(datasetId)]: ( - - ), - }; - }, - {} - ), - [expandedDatasetIds, jobId, results, setTimeRange, timeRange] + [...expandedIds].reduce>((aggregatedDatasetRows, id) => { + const anomaly = results.anomalies.find((_anomaly) => _anomaly.id === id); + + return { + ...aggregatedDatasetRows, + [id]: anomaly ? ( + + ) : null, + }; + }, {}), + [expandedIds, results, timeRange, jobId] ); const [sorting, setSorting] = useState({ sort: { - field: 'topAnomalyScore', + field: 'anomalyScore', direction: 'desc', }, }); + const [_pagination, setPagination] = useState({ + pageIndex: 0, + pageSize: 20, + totalItemCount: results.anomalies.length, + pageSizeOptions: [10, 20, 50], + hidePerPageOptions: false, + }); + + const paginationOptions = useMemo(() => { + return { + ..._pagination, + totalItemCount: results.anomalies.length, + }; + }, [_pagination, results]); + const handleTableChange = useCallback( - ({ sort = {} }) => { + ({ page = {}, sort = {} }) => { + const { index, size } = page; + setPagination((currentPagination) => { + return { + ...currentPagination, + pageIndex: index, + pageSize: size, + }; + }); const { field, direction } = sort; setSorting({ sort: { @@ -107,33 +171,58 @@ export const AnomaliesTable: React.FunctionComponent<{ }, }); }, - [setSorting] + [setSorting, setPagination] ); const sortedTableItems = useMemo(() => { let sortedItems: TableItem[] = []; - if (sorting.sort.field === 'partitionName') { - sortedItems = tableItems.sort((a, b) => (a.partitionId > b.partitionId ? 1 : -1)); - } else if (sorting.sort.field === 'topAnomalyScore') { - sortedItems = tableItems.sort((a, b) => a.topAnomalyScore - b.topAnomalyScore); + if (sorting.sort.field === 'datasetName') { + sortedItems = tableItems.sort((a, b) => (a.datasetName > b.datasetName ? 1 : -1)); + } else if (sorting.sort.field === 'anomalyScore') { + sortedItems = tableItems.sort((a, b) => a.anomalyScore - b.anomalyScore); + } else if (sorting.sort.field === 'startTime') { + sortedItems = tableItems.sort((a, b) => a.startTime - b.startTime); } + return sorting.sort.direction === 'asc' ? sortedItems : sortedItems.reverse(); }, [tableItems, sorting]); + const pageOfItems: TableItem[] = useMemo(() => { + const { pageIndex, pageSize } = paginationOptions; + return sortedTableItems.slice(pageIndex * pageSize, pageIndex * pageSize + pageSize); + }, [paginationOptions, sortedTableItems]); + const columns: Array> = useMemo( () => [ { - field: 'partitionName', - name: partitionColumnName, + field: 'anomalyScore', + name: anomalyScoreColumnName, + sortable: true, + truncateText: true, + dataType: 'number' as const, + width: '130px', + render: (anomalyScore: number) => , + }, + { + field: 'anomalyMessage', + name: anomalyMessageColumnName, + sortable: false, + truncateText: true, + }, + { + field: 'startTime', + name: anomalyStartTimeColumnName, sortable: true, truncateText: true, + width: '230px', + render: (startTime: number) => moment(startTime).format(dateFormat), }, { - field: 'topAnomalyScore', - name: maxAnomalyScoreColumnName, + field: 'datasetName', + name: datasetColumnName, sortable: true, truncateText: true, - dataType: 'number' as const, + width: '200px', }, { align: RIGHT_ALIGNMENT, @@ -141,33 +230,28 @@ export const AnomaliesTable: React.FunctionComponent<{ isExpander: true, render: (item: TableItem) => ( ), }, ], - [collapseDataset, expandDataset, expandedDatasetIds] + [collapseId, expandId, expandedIds, dateFormat] ); return ( - ); }; - -const StyledEuiBasicTable: typeof EuiBasicTable = euiStyled(EuiBasicTable as any)` - & .euiTable { - table-layout: auto; - } -` as any; // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_rate_examples.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_rate_examples.ts new file mode 100644 index 0000000000000..d3b30da72af96 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_rate_examples.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { fold } from 'fp-ts/lib/Either'; +import { pipe } from 'fp-ts/lib/pipeable'; +import { identity } from 'fp-ts/lib/function'; +import { npStart } from '../../../../legacy_singletons'; + +import { + getLogEntryRateExamplesRequestPayloadRT, + getLogEntryRateExamplesSuccessReponsePayloadRT, + LOG_ANALYSIS_GET_LOG_ENTRY_RATE_EXAMPLES_PATH, +} from '../../../../../common/http_api/log_analysis'; +import { createPlainError, throwErrors } from '../../../../../common/runtime_types'; + +export const callGetLogEntryRateExamplesAPI = async ( + sourceId: string, + startTime: number, + endTime: number, + dataset: string, + exampleCount: number +) => { + const response = await npStart.http.fetch(LOG_ANALYSIS_GET_LOG_ENTRY_RATE_EXAMPLES_PATH, { + method: 'POST', + body: JSON.stringify( + getLogEntryRateExamplesRequestPayloadRT.encode({ + data: { + dataset, + exampleCount, + sourceId, + timeRange: { + startTime, + endTime, + }, + }, + }) + ), + }); + + return pipe( + getLogEntryRateExamplesSuccessReponsePayloadRT.decode(response), + fold(throwErrors(createPlainError), identity) + ); +}; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_examples.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_examples.ts new file mode 100644 index 0000000000000..12bcdb2a4b4d6 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_examples.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo, useState } from 'react'; + +import { LogEntryRateExample } from '../../../../common/http_api'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { callGetLogEntryRateExamplesAPI } from './service_calls/get_log_entry_rate_examples'; + +export const useLogEntryRateExamples = ({ + dataset, + endTime, + exampleCount, + sourceId, + startTime, +}: { + dataset: string; + endTime: number; + exampleCount: number; + sourceId: string; + startTime: number; +}) => { + const [logEntryRateExamples, setLogEntryRateExamples] = useState([]); + + const [getLogEntryRateExamplesRequest, getLogEntryRateExamples] = useTrackedPromise( + { + cancelPreviousOn: 'creation', + createPromise: async () => { + return await callGetLogEntryRateExamplesAPI( + sourceId, + startTime, + endTime, + dataset, + exampleCount + ); + }, + onResolve: ({ data: { examples } }) => { + setLogEntryRateExamples(examples); + }, + }, + [dataset, endTime, exampleCount, sourceId, startTime] + ); + + const isLoadingLogEntryRateExamples = useMemo( + () => getLogEntryRateExamplesRequest.state === 'pending', + [getLogEntryRateExamplesRequest.state] + ); + + const hasFailedLoadingLogEntryRateExamples = useMemo( + () => getLogEntryRateExamplesRequest.state === 'rejected', + [getLogEntryRateExamplesRequest.state] + ); + + return { + getLogEntryRateExamples, + hasFailedLoadingLogEntryRateExamples, + isLoadingLogEntryRateExamples, + logEntryRateExamples, + }; +}; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results.ts index de2b873001cce..1cd27c64af53f 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results.ts @@ -10,6 +10,7 @@ import { GetLogEntryRateSuccessResponsePayload, LogEntryRateHistogramBucket, LogEntryRatePartition, + LogEntryRateAnomaly, } from '../../../../common/http_api/log_analysis'; import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { callGetLogEntryRateAPI } from './service_calls/get_log_entry_rate'; @@ -23,11 +24,16 @@ type PartitionRecord = Record< { buckets: PartitionBucket[]; topAnomalyScore: number; totalNumberOfLogEntries: number } >; +export type AnomalyRecord = LogEntryRateAnomaly & { + partitionId: string; +}; + export interface LogEntryRateResults { bucketDuration: number; totalNumberOfLogEntries: number; histogramBuckets: LogEntryRateHistogramBucket[]; partitionBuckets: PartitionRecord; + anomalies: AnomalyRecord[]; } export const useLogEntryRateResults = ({ @@ -55,6 +61,7 @@ export const useLogEntryRateResults = ({ totalNumberOfLogEntries: data.totalNumberOfLogEntries, histogramBuckets: data.histogramBuckets, partitionBuckets: formatLogEntryRateResultsByPartition(data), + anomalies: formatLogEntryRateResultsByAllAnomalies(data), }); }, onReject: () => { @@ -117,3 +124,23 @@ const formatLogEntryRateResultsByPartition = ( return resultsByPartition; }; + +const formatLogEntryRateResultsByAllAnomalies = ( + results: GetLogEntryRateSuccessResponsePayload['data'] +): AnomalyRecord[] => { + return results.histogramBuckets.reduce((anomalies, bucket) => { + return bucket.partitions.reduce((_anomalies, partition) => { + if (partition.anomalies.length > 0) { + partition.anomalies.forEach((anomaly) => { + _anomalies.push({ + partitionId: partition.partitionId, + ...anomaly, + }); + }); + return _anomalies; + } else { + return _anomalies; + } + }, anomalies); + }, []); +}; diff --git a/x-pack/plugins/infra/server/infra_server.ts b/x-pack/plugins/infra/server/infra_server.ts index 6fbdeff950d1a..8af37a36ef745 100644 --- a/x-pack/plugins/infra/server/infra_server.ts +++ b/x-pack/plugins/infra/server/infra_server.ts @@ -15,6 +15,7 @@ import { initGetLogEntryCategoryDatasetsRoute, initGetLogEntryCategoryExamplesRoute, initGetLogEntryRateRoute, + initGetLogEntryRateExamplesRoute, initValidateLogAnalysisDatasetsRoute, initValidateLogAnalysisIndicesRoute, } from './routes/log_analysis'; @@ -56,6 +57,7 @@ export const initInfraServer = (libs: InfraBackendLibs) => { initValidateLogAnalysisDatasetsRoute(libs); initValidateLogAnalysisIndicesRoute(libs); initLogEntriesRoute(libs); + initGetLogEntryRateExamplesRoute(libs); initLogEntriesHighlightsRoute(libs); initLogEntriesSummaryRoute(libs); initLogEntriesSummaryHighlightsRoute(libs); diff --git a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts index 125cc2b196e09..290cf03b67365 100644 --- a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts +++ b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts @@ -7,16 +7,30 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { map, fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; -import { getJobId } from '../../../common/log_analysis'; +import { RequestHandlerContext } from 'src/core/server'; import { throwErrors, createPlainError } from '../../../common/runtime_types'; -import { NoLogAnalysisResultsIndexError } from './errors'; import { logRateModelPlotResponseRT, createLogEntryRateQuery, LogRateModelPlotBucket, CompositeTimestampPartitionKey, } from './queries'; -import { MlSystem } from '../../types'; +import { startTracingSpan } from '../../../common/performance_tracing'; +import { decodeOrThrow } from '../../../common/runtime_types'; +import { getJobId, jobCustomSettingsRT } from '../../../common/log_analysis'; +import { + createLogEntryRateExamplesQuery, + logEntryRateExamplesResponseRT, +} from './queries/log_entry_rate_examples'; +import { + InsufficientLogAnalysisMlJobConfigurationError, + NoLogAnalysisMlJobError, + NoLogAnalysisResultsIndexError, +} from './errors'; +import { InfraSource } from '../sources'; +import type { MlSystem } from '../../types'; +import { InfraRequestHandlerContext } from '../../types'; +import { KibanaFramework } from '../adapters/framework/kibana_framework_adapter'; const COMPOSITE_AGGREGATION_BATCH_SIZE = 1000; @@ -73,6 +87,7 @@ export async function getLogEntryRateBuckets( partitions: Array<{ analysisBucketCount: number; anomalies: Array<{ + id: string; actualLogEntryRate: number; anomalyScore: number; duration: number; @@ -91,7 +106,8 @@ export async function getLogEntryRateBuckets( const partition = { analysisBucketCount: timestampPartitionBucket.filter_model_plot.doc_count, anomalies: timestampPartitionBucket.filter_records.top_hits_record.hits.hits.map( - ({ _source: record }) => ({ + ({ _id, _source: record }) => ({ + id: _id, actualLogEntryRate: record.actual[0], anomalyScore: record.record_score, duration: record.bucket_span * 1000, @@ -127,3 +143,130 @@ export async function getLogEntryRateBuckets( } }, []); } + +export async function getLogEntryRateExamples( + context: RequestHandlerContext & { infra: Required }, + sourceId: string, + startTime: number, + endTime: number, + dataset: string, + exampleCount: number, + sourceConfiguration: InfraSource, + callWithRequest: KibanaFramework['callWithRequest'] +) { + const finalizeLogEntryRateExamplesSpan = startTracingSpan( + 'get log entry rate example log entries' + ); + + const jobId = getJobId(context.infra.spaceId, sourceId, 'log-entry-rate'); + + const { + mlJob, + timing: { spans: fetchMlJobSpans }, + } = await fetchMlJob(context, jobId); + + const customSettings = decodeOrThrow(jobCustomSettingsRT)(mlJob.custom_settings); + const indices = customSettings?.logs_source_config?.indexPattern; + const timestampField = customSettings?.logs_source_config?.timestampField; + const tiebreakerField = sourceConfiguration.configuration.fields.tiebreaker; + + if (indices == null || timestampField == null) { + throw new InsufficientLogAnalysisMlJobConfigurationError( + `Failed to find index configuration for ml job ${jobId}` + ); + } + + const { + examples, + timing: { spans: fetchLogEntryRateExamplesSpans }, + } = await fetchLogEntryRateExamples( + context, + indices, + timestampField, + tiebreakerField, + startTime, + endTime, + dataset, + exampleCount, + callWithRequest + ); + + const logEntryRateExamplesSpan = finalizeLogEntryRateExamplesSpan(); + + return { + data: examples, + timing: { + spans: [logEntryRateExamplesSpan, ...fetchMlJobSpans, ...fetchLogEntryRateExamplesSpans], + }, + }; +} + +export async function fetchLogEntryRateExamples( + context: RequestHandlerContext & { infra: Required }, + indices: string, + timestampField: string, + tiebreakerField: string, + startTime: number, + endTime: number, + dataset: string, + exampleCount: number, + callWithRequest: KibanaFramework['callWithRequest'] +) { + const finalizeEsSearchSpan = startTracingSpan('Fetch log rate examples from ES'); + + const { + hits: { hits }, + } = decodeOrThrow(logEntryRateExamplesResponseRT)( + await callWithRequest( + context, + 'search', + createLogEntryRateExamplesQuery( + indices, + timestampField, + tiebreakerField, + startTime, + endTime, + dataset, + exampleCount + ) + ) + ); + + const esSearchSpan = finalizeEsSearchSpan(); + + return { + examples: hits.map((hit) => ({ + id: hit._id, + dataset, + message: hit._source.message ?? '', + timestamp: hit.sort[0], + tiebreaker: hit.sort[1], + })), + timing: { + spans: [esSearchSpan], + }, + }; +} + +async function fetchMlJob( + context: RequestHandlerContext & { infra: Required }, + logEntryRateJobId: string +) { + const finalizeMlGetJobSpan = startTracingSpan('Fetch ml job from ES'); + const { + jobs: [mlJob], + } = await context.infra.mlAnomalyDetectors.jobs(logEntryRateJobId); + + const mlGetJobSpan = finalizeMlGetJobSpan(); + + if (mlJob == null) { + throw new NoLogAnalysisMlJobError(`Failed to find ml job ${logEntryRateJobId}.`); + } + + return { + mlJob, + timing: { + spans: [mlGetJobSpan], + }, + }; +} diff --git a/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate.ts b/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate.ts index 269850e292636..8d9c586b2ef67 100644 --- a/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate.ts +++ b/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate.ts @@ -143,6 +143,7 @@ export const logRateModelPlotBucketRT = rt.type({ hits: rt.type({ hits: rt.array( rt.type({ + _id: rt.string, _source: logRateMlRecordRT, }) ), diff --git a/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate_examples.ts b/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate_examples.ts new file mode 100644 index 0000000000000..ef06641caf797 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/log_analysis/queries/log_entry_rate_examples.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; + +import { commonSearchSuccessResponseFieldsRT } from '../../../utils/elasticsearch_runtime_types'; +import { defaultRequestParameters } from './common'; +import { partitionField } from '../../../../common/log_analysis'; + +export const createLogEntryRateExamplesQuery = ( + indices: string, + timestampField: string, + tiebreakerField: string, + startTime: number, + endTime: number, + dataset: string, + exampleCount: number +) => ({ + ...defaultRequestParameters, + body: { + query: { + bool: { + filter: [ + { + range: { + [timestampField]: { + gte: startTime, + lte: endTime, + }, + }, + }, + { + term: { + [partitionField]: dataset, + }, + }, + ], + }, + }, + sort: [{ [timestampField]: 'asc' }, { [tiebreakerField]: 'asc' }], + }, + _source: ['event.dataset', 'message'], + index: indices, + size: exampleCount, +}); + +export const logEntryRateExampleHitRT = rt.type({ + _id: rt.string, + _source: rt.partial({ + event: rt.partial({ + dataset: rt.string, + }), + message: rt.string, + }), + sort: rt.tuple([rt.number, rt.number]), +}); + +export type LogEntryRateExampleHit = rt.TypeOf; + +export const logEntryRateExamplesResponseRT = rt.intersection([ + commonSearchSuccessResponseFieldsRT, + rt.type({ + hits: rt.type({ + hits: rt.array(logEntryRateExampleHitRT), + }), + }), +]); + +export type LogEntryRateExamplesResponse = rt.TypeOf; diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/index.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/index.ts index 15615046bdd6a..30b6be435837b 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/index.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/index.ts @@ -8,3 +8,4 @@ export * from './log_entry_categories'; export * from './log_entry_category_datasets'; export * from './log_entry_category_examples'; export * from './log_entry_rate'; +export * from './log_entry_rate_examples'; diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts new file mode 100644 index 0000000000000..b8ebcc66911dc --- /dev/null +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_rate_examples.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import Boom from 'boom'; +import { createValidationFunction } from '../../../../common/runtime_types'; +import { InfraBackendLibs } from '../../../lib/infra_types'; +import { NoLogAnalysisResultsIndexError, getLogEntryRateExamples } from '../../../lib/log_analysis'; +import { assertHasInfraMlPlugins } from '../../../utils/request_context'; +import { + getLogEntryRateExamplesRequestPayloadRT, + getLogEntryRateExamplesSuccessReponsePayloadRT, + LOG_ANALYSIS_GET_LOG_ENTRY_RATE_EXAMPLES_PATH, +} from '../../../../common/http_api/log_analysis'; + +export const initGetLogEntryRateExamplesRoute = ({ framework, sources }: InfraBackendLibs) => { + framework.registerRoute( + { + method: 'post', + path: LOG_ANALYSIS_GET_LOG_ENTRY_RATE_EXAMPLES_PATH, + validate: { + body: createValidationFunction(getLogEntryRateExamplesRequestPayloadRT), + }, + }, + framework.router.handleLegacyErrors(async (requestContext, request, response) => { + const { + data: { + dataset, + exampleCount, + sourceId, + timeRange: { startTime, endTime }, + }, + } = request.body; + + const sourceConfiguration = await sources.getSourceConfiguration( + requestContext.core.savedObjects.client, + sourceId + ); + + try { + assertHasInfraMlPlugins(requestContext); + + const { data: logEntryRateExamples, timing } = await getLogEntryRateExamples( + requestContext, + sourceId, + startTime, + endTime, + dataset, + exampleCount, + sourceConfiguration, + framework.callWithRequest + ); + + return response.ok({ + body: getLogEntryRateExamplesSuccessReponsePayloadRT.encode({ + data: { + examples: logEntryRateExamples, + }, + timing, + }), + }); + } catch (error) { + if (Boom.isBoom(error)) { + throw error; + } + + if (error instanceof NoLogAnalysisResultsIndexError) { + return response.notFound({ body: { message: error.message } }); + } + + return response.customError({ + statusCode: error.statusCode ?? 500, + body: { + message: error.message ?? 'An unexpected error occurred', + }, + }); + } + }) + ); +}; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 9a3f52a0ce47c..683d83dde4e0f 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7473,12 +7473,9 @@ "xpack.infra.logs.alerting.threshold.documentCountActionVariableDescription": "指定された条件と一致したログエントリ数", "xpack.infra.logs.alerting.threshold.fired": "実行", "xpack.infra.logs.analysis.analyzeInMlButtonLabel": "ML で分析", - "xpack.infra.logs.analysis.anomaliesExpandedRowNumberOfLogEntriesDescription": "ログエントリーの数です", "xpack.infra.logs.analysis.anomaliesSectionLineSeriesName": "15 分ごとのログエントリー (平均)", "xpack.infra.logs.analysis.anomaliesSectionLoadingAriaLabel": "異常を読み込み中", "xpack.infra.logs.analysis.anomaliesSectionTitle": "異常", - "xpack.infra.logs.analysis.anomaliesTableMaxAnomalyScoreColumnName": "最高異常スコア", - "xpack.infra.logs.analysis.anomaliesTablePartitionColumnName": "パーティション", "xpack.infra.logs.analysis.anomalySectionNoAnomaliesTitle": "異常が検出されませんでした。", "xpack.infra.logs.analysis.anomalySectionNoDataBody": "時間範囲を調整する必要があるかもしれません。", "xpack.infra.logs.analysis.anomalySectionNoDataTitle": "表示するデータがありません。", @@ -7505,9 +7502,6 @@ "xpack.infra.logs.analysis.mlUnavailableTitle": "この機能には機械学習が必要です", "xpack.infra.logs.analysis.onboardingSuccessContent": "機械学習ロボットがデータの収集を開始するまでしばらくお待ちください。", "xpack.infra.logs.analysis.onboardingSuccessTitle": "成功!", - "xpack.infra.logs.analysis.overallAnomaliesNumberOfLogEntriesDescription": "ログエントリーの数です", - "xpack.infra.logs.analysis.overallAnomaliesTopAnomalyScoreDescription": "最高異常スコア", - "xpack.infra.logs.analysis.overallAnomalyChartMaxScoresLabel": "最高異常スコア", "xpack.infra.logs.analysis.partitionMaxAnomalyScoreAnnotationLabel": "最高異常スコア: {maxAnomalyScore}", "xpack.infra.logs.analysis.recreateJobButtonLabel": "ML ジョブを再作成", "xpack.infra.logs.analysis.setupStatusTryAgainButton": "再試行", @@ -7552,10 +7546,6 @@ "xpack.infra.logs.logEntryCategories.countColumnTitle": "メッセージ数", "xpack.infra.logs.logEntryCategories.datasetColumnTitle": "データセット", "xpack.infra.logs.logEntryCategories.datasetFilterPlaceholder": "データセットでフィルター", - "xpack.infra.logs.logEntryCategories.exampleEmptyDescription": "選択した時間範囲内に例は見つかりませんでした。ログエントリー保持期間を長くするとメッセージサンプルの可用性が向上します。", - "xpack.infra.logs.logEntryCategories.exampleEmptyReloadButtonLabel": "再読み込み", - "xpack.infra.logs.logEntryCategories.exampleLoadingFailureDescription": "カテゴリーの例を読み込めませんでした。", - "xpack.infra.logs.logEntryCategories.exampleLoadingFailureRetryButtonLabel": "再試行", "xpack.infra.logs.logEntryCategories.jobStatusLoadingMessage": "分類ジョブのステータスを確認中...", "xpack.infra.logs.logEntryCategories.loadDataErrorTitle": "カテゴリーデータを読み込めませんでした", "xpack.infra.logs.logEntryCategories.manyCategoriesWarningReasonDescription": "分析されたドキュメントごとのカテゴリ比率が{categoriesDocumentRatio, number }で、非常に高い値です。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 7aebb59e0f8a2..ca065c9523637 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7477,12 +7477,9 @@ "xpack.infra.logs.alerting.threshold.documentCountActionVariableDescription": "匹配所提供条件的日志条目数", "xpack.infra.logs.alerting.threshold.fired": "已触发", "xpack.infra.logs.analysis.analyzeInMlButtonLabel": "在 ML 中分析", - "xpack.infra.logs.analysis.anomaliesExpandedRowNumberOfLogEntriesDescription": "日志条目数", "xpack.infra.logs.analysis.anomaliesSectionLineSeriesName": "每 15 分钟日志条目数(平均值)", "xpack.infra.logs.analysis.anomaliesSectionLoadingAriaLabel": "正在加载异常", "xpack.infra.logs.analysis.anomaliesSectionTitle": "异常", - "xpack.infra.logs.analysis.anomaliesTableMaxAnomalyScoreColumnName": "最大异常分数", - "xpack.infra.logs.analysis.anomaliesTablePartitionColumnName": "分区", "xpack.infra.logs.analysis.anomalySectionNoAnomaliesTitle": "未检测到任何异常。", "xpack.infra.logs.analysis.anomalySectionNoDataBody": "您可能想调整时间范围。", "xpack.infra.logs.analysis.anomalySectionNoDataTitle": "没有可显示的数据。", @@ -7509,9 +7506,6 @@ "xpack.infra.logs.analysis.mlUnavailableTitle": "此功能需要 Machine Learning", "xpack.infra.logs.analysis.onboardingSuccessContent": "请注意,我们的 Machine Learning 机器人若干分钟后才会开始收集数据。", "xpack.infra.logs.analysis.onboardingSuccessTitle": "成功!", - "xpack.infra.logs.analysis.overallAnomaliesNumberOfLogEntriesDescription": "日志条目数", - "xpack.infra.logs.analysis.overallAnomaliesTopAnomalyScoreDescription": "最大异常分数", - "xpack.infra.logs.analysis.overallAnomalyChartMaxScoresLabel": "最大异常分数:", "xpack.infra.logs.analysis.partitionMaxAnomalyScoreAnnotationLabel": "最大异常分数:{maxAnomalyScore}", "xpack.infra.logs.analysis.recreateJobButtonLabel": "重新创建 ML 作业", "xpack.infra.logs.analysis.setupStatusTryAgainButton": "重试", @@ -7556,10 +7550,6 @@ "xpack.infra.logs.logEntryCategories.countColumnTitle": "消息计数", "xpack.infra.logs.logEntryCategories.datasetColumnTitle": "数据集", "xpack.infra.logs.logEntryCategories.datasetFilterPlaceholder": "按数据集筛选", - "xpack.infra.logs.logEntryCategories.exampleEmptyDescription": "选定时间范围内未找到任何示例。增大日志条目保留期限以改善消息样例可用性。", - "xpack.infra.logs.logEntryCategories.exampleEmptyReloadButtonLabel": "重新加载", - "xpack.infra.logs.logEntryCategories.exampleLoadingFailureDescription": "无法加载类别示例。", - "xpack.infra.logs.logEntryCategories.exampleLoadingFailureRetryButtonLabel": "重试", "xpack.infra.logs.logEntryCategories.jobStatusLoadingMessage": "正在检查归类作业的状态......", "xpack.infra.logs.logEntryCategories.loadDataErrorTitle": "无法加载类别数据", "xpack.infra.logs.logEntryCategories.manyCategoriesWarningReasonDescription": "每个分析文档的类别比率非常高,达到 {categoriesDocumentRatio, number }。", From 78fc9fb585b2fe34e65f10afe5f5b522b70c02fa Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau <189600+XavierM@users.noreply.github.com> Date: Fri, 3 Jul 2020 14:08:22 -0400 Subject: [PATCH 38/59] [SECURITY] Bug fix for topN on draggables (#70450) * back to normal * add unit test * hover issue + indexToAdd issue * fix unit test * review II * fix bug + review * simplification * do not update state when component is unmounted * fix hover action on field name Co-authored-by: Elastic Machine --- .../alerts_histogram_panel/index.tsx | 7 +- .../common/components/charts/barchart.tsx | 5 +- .../charts/draggable_legend_item.tsx | 4 +- .../drag_drop_context_wrapper.tsx | 12 +-- .../drag_and_drop/draggable_wrapper.tsx | 58 +++++++++--- .../draggable_wrapper_hover_content.test.tsx | 34 +++++++ .../draggable_wrapper_hover_content.tsx | 91 ++++++++++++++++--- .../common/components/draggables/index.tsx | 4 +- .../components/event_details/columns.tsx | 1 - .../components/matrix_histogram/index.tsx | 3 + .../components/matrix_histogram/types.ts | 5 +- .../common/components/top_n/index.test.tsx | 25 +++-- .../public/common/components/top_n/index.tsx | 77 ++++++++-------- .../public/common/components/top_n/top_n.tsx | 10 +- .../components/with_hover_actions/index.tsx | 26 +++--- .../public/common/containers/source/index.tsx | 49 ++++------ .../public/common/lib/keury/index.test.ts | 18 ++-- .../public/common/lib/keury/index.ts | 7 +- .../components/events_by_dataset/index.tsx | 3 + .../components/signals_by_category/index.tsx | 3 + .../components/fields_browser/field_items.tsx | 1 - .../fields_browser/field_name.test.tsx | 4 +- .../components/fields_browser/field_name.tsx | 41 +++++++-- .../components/manage_timeline/index.tsx | 47 +++++++--- .../components/timeline/body/index.test.tsx | 15 +++ .../components/timeline/body/index.tsx | 1 + .../timeline/body/stateful_body.tsx | 4 +- .../timelines/components/timeline/styles.tsx | 5 +- .../components/timeline/timeline.tsx | 11 ++- 29 files changed, 399 insertions(+), 172 deletions(-) diff --git a/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx b/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx index b6db6eb93d77f..b002700d7eff0 100644 --- a/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx @@ -69,6 +69,7 @@ interface AlertsHistogramPanelProps { showLinkToAlerts?: boolean; showTotalAlertsCount?: boolean; stackByOptions?: AlertsHistogramOption[]; + timelineId?: string; title?: string; to: number; updateDateRange: UpdateDateRange; @@ -98,8 +99,9 @@ export const AlertsHistogramPanel = memo( showLinkToAlerts = false, showTotalAlertsCount = false, stackByOptions, - to, + timelineId, title = i18n.HISTOGRAM_HEADER, + to, updateDateRange, }) => { // create a unique, but stable (across re-renders) query id @@ -163,11 +165,12 @@ export const AlertsHistogramPanel = memo( `draggable-legend-item-${uuid.v4()}-${selectedStackByOption.value}-${bucket.key}` ), field: selectedStackByOption.value, + timelineId, value: bucket.key, })) : NO_LEGEND_DATA, // eslint-disable-next-line react-hooks/exhaustive-deps - [alertsData, selectedStackByOption.value] + [alertsData, selectedStackByOption.value, timelineId] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx b/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx index 42fc2ac9b8453..fba8c3faa9237 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/barchart.tsx @@ -117,6 +117,7 @@ interface BarChartComponentProps { barChart: ChartSeriesData[] | null | undefined; configs?: ChartSeriesConfigs | undefined; stackByField?: string; + timelineId?: string; } const NO_LEGEND_DATA: LegendItem[] = []; @@ -125,6 +126,7 @@ export const BarChartComponent: React.FC = ({ barChart, configs, stackByField, + timelineId, }) => { const { ref: measureRef, width, height } = useThrottledResizeObserver(); const legendItems: LegendItem[] = useMemo( @@ -135,11 +137,12 @@ export const BarChartComponent: React.FC = ({ dataProviderId: escapeDataProviderId( `draggable-legend-item-${uuid.v4()}-${stackByField}-${d.key}` ), + timelineId, field: stackByField, value: d.key, })) : NO_LEGEND_DATA, - [barChart, stackByField] + [barChart, stackByField, timelineId] ); const customHeight = get('customHeight', configs); diff --git a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx index cdda1733932d5..bb71e5e73475d 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/draggable_legend_item.tsx @@ -21,13 +21,14 @@ export interface LegendItem { color?: string; dataProviderId: string; field: string; + timelineId?: string; value: string; } const DraggableLegendItemComponent: React.FC<{ legendItem: LegendItem; }> = ({ legendItem }) => { - const { color, dataProviderId, field, value } = legendItem; + const { color, dataProviderId, field, timelineId, value } = legendItem; return ( @@ -44,6 +45,7 @@ const DraggableLegendItemComponent: React.FC<{ data-test-subj={`legend-item-${dataProviderId}`} field={field} id={dataProviderId} + timelineId={timelineId} value={value} /> ) : ( diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx index 3edc1d0d84b69..74efe2d34fcca 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/drag_drop_context_wrapper.tsx @@ -18,11 +18,10 @@ import { IdToDataProvider } from '../../store/drag_and_drop/model'; import { State } from '../../store/types'; import { DataProvider } from '../../../timelines/components/timeline/data_providers/data_provider'; import { reArrangeProviders } from '../../../timelines/components/timeline/data_providers/helpers'; -import { ACTIVE_TIMELINE_REDUX_ID } from '../top_n'; import { ADDED_TO_TIMELINE_MESSAGE } from '../../hooks/translations'; import { useAddToTimelineSensor } from '../../hooks/use_add_to_timeline'; import { displaySuccessToast, useStateToaster } from '../toasters'; - +import { TimelineId } from '../../../../common/types/timeline'; import { addFieldToTimelineColumns, addProviderToTimeline, @@ -35,7 +34,7 @@ import { userIsReArrangingProviders, } from './helpers'; -// @ts-ignore +// @ts-expect-error window['__react-beautiful-dnd-disable-dev-warnings'] = true; interface Props { @@ -67,7 +66,7 @@ const onDragEndHandler = ({ destination: result.destination, dispatch, source: result.source, - timelineId: ACTIVE_TIMELINE_REDUX_ID, + timelineId: TimelineId.active, }); } else if (providerWasDroppedOnTimeline(result)) { addProviderToTimeline({ @@ -76,7 +75,7 @@ const onDragEndHandler = ({ dispatch, onAddedToTimeline, result, - timelineId: ACTIVE_TIMELINE_REDUX_ID, + timelineId: TimelineId.active, }); } else if (fieldWasDroppedOnTimelineColumns(result)) { addFieldToTimelineColumns({ @@ -130,7 +129,6 @@ export const DragDropContextWrapperComponent = React.memo {children} @@ -152,7 +150,7 @@ const emptyActiveTimelineDataProviders: DataProvider[] = []; // stable reference const mapStateToProps = (state: State) => { const activeTimelineDataProviders = - timelineSelectors.getTimelineByIdSelector()(state, ACTIVE_TIMELINE_REDUX_ID)?.dataProviders ?? + timelineSelectors.getTimelineByIdSelector()(state, TimelineId.active)?.dataProviders ?? emptyActiveTimelineDataProviders; const dataProviders = dragAndDropSelectors.dataProvidersSelector(state) ?? emptyDataProviders; diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx index 22b95f0d0c0e9..e7594365e8103 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState, useRef } from 'react'; import { Draggable, DraggableProvided, @@ -22,7 +22,7 @@ import { DataProvider } from '../../../timelines/components/timeline/data_provid import { TruncatableText } from '../truncatable_text'; import { WithHoverActions } from '../with_hover_actions'; -import { DraggableWrapperHoverContent } from './draggable_wrapper_hover_content'; +import { DraggableWrapperHoverContent, useGetTimelineId } from './draggable_wrapper_hover_content'; import { getDraggableId, getDroppableId } from './helpers'; import { ProviderContainer } from './provider_container'; @@ -76,6 +76,7 @@ interface Props { dataProvider: DataProvider; inline?: boolean; render: RenderFunctionProp; + timelineId?: string; truncate?: boolean; onFilterAdded?: () => void; } @@ -100,16 +101,31 @@ export const getStyle = ( }; export const DraggableWrapper = React.memo( - ({ dataProvider, onFilterAdded, render, truncate }) => { + ({ dataProvider, onFilterAdded, render, timelineId, truncate }) => { + const draggableRef = useRef(null); + const [closePopOverTrigger, setClosePopOverTrigger] = useState(false); const [showTopN, setShowTopN] = useState(false); - const toggleTopN = useCallback(() => { - setShowTopN(!showTopN); - }, [setShowTopN, showTopN]); - + const [goGetTimelineId, setGoGetTimelineId] = useState(false); + const timelineIdFind = useGetTimelineId(draggableRef, goGetTimelineId); const [providerRegistered, setProviderRegistered] = useState(false); const dispatch = useDispatch(); + const handleClosePopOverTrigger = useCallback( + () => setClosePopOverTrigger((prevClosePopOverTrigger) => !prevClosePopOverTrigger), + [] + ); + + const toggleTopN = useCallback(() => { + setShowTopN((prevShowTopN) => { + const newShowTopN = !prevShowTopN; + if (newShowTopN === false) { + handleClosePopOverTrigger(); + } + return newShowTopN; + }); + }, [handleClosePopOverTrigger]); + const registerProvider = useCallback(() => { if (!providerRegistered) { dispatch(dragAndDropActions.registerProvider({ provider: dataProvider })); @@ -126,17 +142,19 @@ export const DraggableWrapper = React.memo( () => () => { unRegisterProvider(); }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [] + [unRegisterProvider] ); const hoverContent = useMemo( () => ( ( } /> ), - [dataProvider, onFilterAdded, showTopN, toggleTopN] + [ + dataProvider, + handleClosePopOverTrigger, + onFilterAdded, + showTopN, + timelineId, + timelineIdFind, + toggleTopN, + ] ); const renderContent = useCallback( @@ -184,7 +210,10 @@ export const DraggableWrapper = React.memo( { + provided.innerRef(e); + draggableRef.current = e; + }} data-test-subj="providerContainer" isDragging={snapshot.isDragging} registerProvider={registerProvider} @@ -214,7 +243,12 @@ export const DraggableWrapper = React.memo( ); return ( - + ); }, (prevProps, nextProps) => diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx index ee1dc73b27fe2..3507b0f8c447d 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.test.tsx @@ -52,6 +52,7 @@ jest.mock('../../../timelines/components/manage_timeline', () => { return { ...original, useManageTimeline: () => ({ + getManageTimelineById: jest.fn().mockReturnValue({ indexToAdd: [] }), getTimelineFilterManager: mockGetTimelineFilterManager, isManagedTimeline: jest.fn().mockReturnValue(false), }), @@ -63,8 +64,10 @@ const timelineId = TimelineId.active; const field = 'process.name'; const value = 'nice'; const toggleTopN = jest.fn(); +const goGetTimelineId = jest.fn(); const defaultProps = { field, + goGetTimelineId, showTopN: false, timelineId, toggleTopN, @@ -130,6 +133,18 @@ describe('DraggableWrapperHoverContent', () => { wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().exists() ).toBe(false); }); + + test(`it should call goGetTimelineId when user is over the 'Filter ${hoverAction} value' button`, () => { + const wrapper = mount( + + + + ); + const button = wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first(); + button.simulate('mouseenter'); + expect(goGetTimelineId).toHaveBeenCalledWith(true); + }); + describe('when run in the context of a timeline', () => { let wrapper: ReactWrapper; let onFilterAdded: () => void; @@ -151,6 +166,7 @@ describe('DraggableWrapperHoverContent', () => { ); }); + test('when clicked, it adds a filter to the timeline when running in the context of a timeline', () => { wrapper.find(`[data-test-subj="filter-${hoverAction}-value"]`).first().simulate('click'); wrapper.update(); @@ -459,6 +475,24 @@ describe('DraggableWrapperHoverContent', () => { expect(wrapper.find('[data-test-subj="show-top-field"]').first().exists()).toBe(false); }); + test(`it should invokes goGetTimelineId when user is over the 'Show top field' button`, () => { + const whitelistedField = 'signal.rule.name'; + const wrapper = mount( + + + + ); + const button = wrapper.find(`[data-test-subj="show-top-field"]`).first(); + button.simulate('mouseenter'); + expect(goGetTimelineId).toHaveBeenCalledWith(true); + }); + test(`invokes the toggleTopN function when the 'Show top field' button is clicked`, async () => { const whitelistedField = 'signal.rule.name'; const wrapper = mount( diff --git a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx index 4efdea5eee43b..a951bfa98d64b 100644 --- a/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx +++ b/x-pack/plugins/security_solution/public/common/components/drag_and_drop/draggable_wrapper_hover_content.tsx @@ -5,7 +5,7 @@ */ import { EuiButtonIcon, EuiToolTip } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useState, useEffect } from 'react'; import { DraggableId } from 'react-beautiful-dnd'; import { getAllFieldsByName, useWithSource } from '../../containers/source'; @@ -19,20 +19,25 @@ import { allowTopN } from './helpers'; import * as i18n from './translations'; import { useManageTimeline } from '../../../timelines/components/manage_timeline'; import { TimelineId } from '../../../../common/types/timeline'; +import { SELECTOR_TIMELINE_BODY_CLASS_NAME } from '../../../timelines/components/timeline/styles'; interface Props { + closePopOver?: () => void; draggableId?: DraggableId; field: string; + goGetTimelineId?: (args: boolean) => void; onFilterAdded?: () => void; showTopN: boolean; - timelineId?: string; + timelineId?: string | null; toggleTopN: () => void; value?: string[] | string | null; } const DraggableWrapperHoverContentComponent: React.FC = ({ + closePopOver, draggableId, field, + goGetTimelineId, onFilterAdded, showTopN, timelineId, @@ -44,17 +49,37 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ const filterManagerBackup = useMemo(() => kibana.services.data.query.filterManager, [ kibana.services.data.query.filterManager, ]); - const { getTimelineFilterManager } = useManageTimeline(); + const { getManageTimelineById, getTimelineFilterManager } = useManageTimeline(); const filterManager = useMemo( () => - timelineId === TimelineId.active || - (draggableId != null && draggableId?.includes(TimelineId.active)) + timelineId === TimelineId.active ? getTimelineFilterManager(TimelineId.active) : filterManagerBackup, - [draggableId, timelineId, getTimelineFilterManager, filterManagerBackup] + [timelineId, getTimelineFilterManager, filterManagerBackup] ); + // Regarding data from useManageTimeline: + // * `indexToAdd`, which enables the alerts index to be appended to + // the `indexPattern` returned by `useWithSource`, may only be populated when + // this component is rendered in the context of the active timeline. This + // behavior enables the 'All events' view by appending the alerts index + // to the index pattern. + const { indexToAdd } = useMemo( + () => + timelineId === TimelineId.active + ? getManageTimelineById(TimelineId.active) + : { indexToAdd: null }, + [getManageTimelineById, timelineId] + ); + + const handleStartDragToTimeline = useCallback(() => { + startDragToTimeline(); + if (closePopOver != null) { + closePopOver(); + } + }, [closePopOver, startDragToTimeline]); + const filterForValue = useCallback(() => { const filter = value?.length === 0 ? createFilter(field, undefined) : createFilter(field, value); @@ -62,13 +87,15 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ if (activeFilterManager != null) { activeFilterManager.addFilters(filter); - + if (closePopOver != null) { + closePopOver(); + } if (onFilterAdded != null) { onFilterAdded(); } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [field, value, filterManager, onFilterAdded]); + }, [closePopOver, field, value, filterManager, onFilterAdded]); const filterOutValue = useCallback(() => { const filter = @@ -78,14 +105,23 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ if (activeFilterManager != null) { activeFilterManager.addFilters(filter); + if (closePopOver != null) { + closePopOver(); + } if (onFilterAdded != null) { onFilterAdded(); } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [field, value, filterManager, onFilterAdded]); + }, [closePopOver, field, value, filterManager, onFilterAdded]); - const { browserFields } = useWithSource(); + const handleGoGetTimelineId = useCallback(() => { + if (goGetTimelineId != null && timelineId == null) { + goGetTimelineId(true); + } + }, [goGetTimelineId, timelineId]); + + const { browserFields, indexPattern } = useWithSource('default', indexToAdd); return ( <> @@ -97,6 +133,7 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ data-test-subj="filter-for-value" iconType="magnifyWithPlus" onClick={filterForValue} + onMouseEnter={handleGoGetTimelineId} /> )} @@ -109,6 +146,7 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ data-test-subj="filter-out-value" iconType="magnifyWithMinus" onClick={filterOutValue} + onMouseEnter={handleGoGetTimelineId} /> )} @@ -120,7 +158,7 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ color="text" data-test-subj="add-to-timeline" iconType="timeline" - onClick={startDragToTimeline} + onClick={handleStartDragToTimeline} /> )} @@ -139,6 +177,7 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ data-test-subj="show-top-field" iconType="visBarVertical" onClick={toggleTopN} + onMouseEnter={handleGoGetTimelineId} /> )} @@ -147,7 +186,10 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ @@ -172,3 +214,30 @@ const DraggableWrapperHoverContentComponent: React.FC = ({ DraggableWrapperHoverContentComponent.displayName = 'DraggableWrapperHoverContentComponent'; export const DraggableWrapperHoverContent = React.memo(DraggableWrapperHoverContentComponent); + +export const useGetTimelineId = function ( + elem: React.MutableRefObject, + getTimelineId: boolean = false +) { + const [timelineId, setTimelineId] = useState(null); + + useEffect(() => { + let startElem: Element | (Node & ParentNode) | null = elem.current; + if (startElem != null && getTimelineId) { + for (; startElem && startElem !== document; startElem = startElem.parentNode) { + const myElem: Element = startElem as Element; + if ( + myElem != null && + myElem.classList != null && + myElem.classList.contains(SELECTOR_TIMELINE_BODY_CLASS_NAME) && + myElem.hasAttribute('data-timeline-id') + ) { + setTimelineId(myElem.getAttribute('data-timeline-id')); + break; + } + } + } + }, [elem, getTimelineId]); + + return timelineId; +}; diff --git a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx index fcf007a4cf1ba..62a07550650aa 100644 --- a/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/draggables/index.tsx @@ -21,6 +21,7 @@ export interface DefaultDraggableType { name?: string | null; queryValue?: string | null; children?: React.ReactNode; + timelineId?: string; tooltipContent?: React.ReactNode; } @@ -83,7 +84,7 @@ Content.displayName = 'Content'; * @param queryValue - defaults to `value`, this query overrides the `queryMatch.value` used by the `DataProvider` that represents the data */ export const DefaultDraggable = React.memo( - ({ id, field, value, name, children, tooltipContent, queryValue }) => + ({ id, field, value, name, children, timelineId, tooltipContent, queryValue }) => value != null ? ( ( ) } + timelineId={timelineId} /> ) : null ); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx index e01ccf1e544bb..7b6e9fb21a3e3 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx @@ -147,7 +147,6 @@ export const getColumns = ({ data-test-subj="field-name" fieldId={field} onUpdateColumns={onUpdateColumns} - timelineId={contextId} />
)} diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx index 3e196c4b7bad4..31f7e1b7fac7c 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx @@ -53,6 +53,7 @@ export interface OwnProps extends QueryTemplateProps { showLegend?: boolean; stackByOptions: MatrixHistogramOption[]; subtitle?: string | GetSubTitle; + timelineId?: string; title: string | GetTitle; type: hostsModel.HostsType | networkModel.NetworkType; } @@ -94,6 +95,7 @@ export const MatrixHistogramComponent: React.FC< stackByOptions, startDate, subtitle, + timelineId, title, titleSize, dispatchSetAbsoluteRangeDatePicker, @@ -242,6 +244,7 @@ export const MatrixHistogramComponent: React.FC< barChart={barChartData} configs={barchartConfigs} stackByField={selectedStackByOption.value} + timelineId={timelineId} /> )} diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts index a9e6cdd19bb20..f388409b443db 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts @@ -80,11 +80,12 @@ export interface MatrixHistogramQueryProps { } export interface MatrixHistogramProps extends MatrixHistogramBasicProps { + legendPosition?: Position; scaleType?: ScaleType; - yTickFormatter?: (value: number) => string; showLegend?: boolean; showSpacer?: boolean; - legendPosition?: Position; + timelineId?: string; + yTickFormatter?: (value: number) => string; } export interface HistogramBucket { diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx index 336f906b3bed0..503e9983692f1 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/index.test.tsx @@ -15,17 +15,19 @@ import { SUB_PLUGINS_REDUCER, kibanaObservable, createSecuritySolutionStorageMock, + mockIndexPattern, } from '../../mock'; import { createKibanaCoreStartMock } from '../../mock/kibana_core'; import { FilterManager } from '../../../../../../../src/plugins/data/public'; import { createStore, State } from '../../store'; import { Props } from './top_n'; -import { ACTIVE_TIMELINE_REDUX_ID, StatefulTopN } from '.'; +import { StatefulTopN } from '.'; import { ManageGlobalTimeline, timelineDefaults, } from '../../../timelines/components/manage_timeline'; +import { TimelineId } from '../../../../common/types/timeline'; jest.mock('react-router-dom', () => { const original = jest.requireActual('react-router-dom'); @@ -94,9 +96,9 @@ const state: State = { timeline: { ...mockGlobalState.timeline, timelineById: { - [ACTIVE_TIMELINE_REDUX_ID]: { + [TimelineId.active]: { ...mockGlobalState.timeline.timelineById.test, - id: ACTIVE_TIMELINE_REDUX_ID, + id: TimelineId.active, dataProviders: [ { id: @@ -189,6 +191,9 @@ describe('StatefulTopN', () => { { beforeEach(() => { filterManager = new FilterManager(mockUiSettingsForFilterManager); const manageTimelineForTesting = { - [ACTIVE_TIMELINE_REDUX_ID]: { + [TimelineId.active]: { ...timelineDefaults, - id: ACTIVE_TIMELINE_REDUX_ID, + id: TimelineId.active, filterManager, }, }; @@ -278,6 +283,9 @@ describe('StatefulTopN', () => { { const filterManager = new FilterManager(mockUiSettingsForFilterManager); const manageTimelineForTesting = { - [ACTIVE_TIMELINE_REDUX_ID]: { + [TimelineId.active]: { ...timelineDefaults, - id: ACTIVE_TIMELINE_REDUX_ID, + id: TimelineId.active, filterManager, documentType: 'alerts', }, @@ -356,6 +364,9 @@ describe('StatefulTopN', () => { { // filters that appear at the top of most views in the app, and all the // filters in the active timeline: const mapStateToProps = (state: State) => { - const activeTimeline: TimelineModel = - getTimeline(state, ACTIVE_TIMELINE_REDUX_ID) ?? timelineDefaults; + const activeTimeline: TimelineModel = getTimeline(state, TimelineId.active) ?? timelineDefaults; const activeTimelineFilters = activeTimeline.filters ?? EMPTY_FILTERS; const activeTimelineInput: inputsModel.InputsRange = getInputsTimeline(state); @@ -48,7 +49,7 @@ const makeMapStateToProps = () => { activeTimelineEventType: activeTimeline.eventType, activeTimelineFilters, activeTimelineFrom: activeTimelineInput.timerange.from, - activeTimelineKqlQueryExpression: getKqlQueryTimeline(state, ACTIVE_TIMELINE_REDUX_ID), + activeTimelineKqlQueryExpression: getKqlQueryTimeline(state, TimelineId.active), activeTimelineTo: activeTimelineInput.timerange.to, dataProviders: activeTimeline.dataProviders, globalQuery: getGlobalQuerySelector(state), @@ -64,9 +65,17 @@ const mapDispatchToProps = { setAbsoluteRangeDatePicker: dispatchSetAbsoluteRang const connector = connect(makeMapStateToProps, mapDispatchToProps); +// * `indexToAdd`, which enables the alerts index to be appended to +// the `indexPattern` returned by `useWithSource`, may only be populated when +// this component is rendered in the context of the active timeline. This +// behavior enables the 'All events' view by appending the alerts index +// to the index pattern. interface OwnProps { browserFields: BrowserFields; field: string; + indexPattern: IIndexPattern; + indexToAdd: string[] | null; + timelineId?: string; toggleTopN: () => void; onFilterAdded?: () => void; value?: string[] | string | null; @@ -83,48 +92,29 @@ const StatefulTopNComponent: React.FC = ({ browserFields, dataProviders, field, + indexPattern, + indexToAdd, globalFilters = EMPTY_FILTERS, globalQuery = EMPTY_QUERY, kqlMode, onFilterAdded, setAbsoluteRangeDatePicker, + timelineId, toggleTopN, value, }) => { const kibana = useKibana(); - // Regarding data from useTimelineTypeContext: - // * `documentType` (e.g. 'alerts') may only be populated in some views, - // e.g. the `Alerts` view on the `Detections` page. - // * `id` (`timelineId`) may only be populated when we are rendered in the - // context of the active timeline. - // * `indexToAdd`, which enables the alerts index to be appended to - // the `indexPattern` returned by `useWithSource`, may only be populated when - // this component is rendered in the context of the active timeline. This - // behavior enables the 'All events' view by appending the alerts index - // to the index pattern. - const { isManagedTimeline, getManageTimelineById } = useManageTimeline(); - const { documentType, id: timelineId, indexToAdd } = useMemo( - () => - isManagedTimeline(ACTIVE_TIMELINE_REDUX_ID) - ? getManageTimelineById(ACTIVE_TIMELINE_REDUX_ID) - : { documentType: null, id: null, indexToAdd: null }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [getManageTimelineById] - ); - const options = getOptions( - timelineId === ACTIVE_TIMELINE_REDUX_ID ? activeTimelineEventType : undefined + timelineId === TimelineId.active ? activeTimelineEventType : undefined ); - const { indexPattern } = useWithSource('default', indexToAdd); - return ( {({ from, deleteQuery, setQuery, to }) => ( = ({ : undefined } data-test-subj="top-n" - defaultView={documentType?.toLocaleLowerCase() === 'alerts' ? 'alert' : options[0].value} - deleteQuery={timelineId === ACTIVE_TIMELINE_REDUX_ID ? undefined : deleteQuery} + defaultView={ + timelineId === TimelineId.alertsPage || timelineId === TimelineId.alertsRulesDetailsPage + ? 'alert' + : options[0].value + } + deleteQuery={timelineId === TimelineId.active ? undefined : deleteQuery} field={field} - filters={timelineId === ACTIVE_TIMELINE_REDUX_ID ? EMPTY_FILTERS : globalFilters} - from={timelineId === ACTIVE_TIMELINE_REDUX_ID ? activeTimelineFrom : from} + filters={timelineId === TimelineId.active ? EMPTY_FILTERS : globalFilters} + from={timelineId === TimelineId.active ? activeTimelineFrom : from} indexPattern={indexPattern} indexToAdd={indexToAdd} options={options} - query={timelineId === ACTIVE_TIMELINE_REDUX_ID ? EMPTY_QUERY : globalQuery} + query={timelineId === TimelineId.active ? EMPTY_QUERY : globalQuery} setAbsoluteRangeDatePicker={setAbsoluteRangeDatePicker} setAbsoluteRangeDatePickerTarget={ - timelineId === ACTIVE_TIMELINE_REDUX_ID ? 'timeline' : 'global' + timelineId === TimelineId.active ? 'timeline' : 'global' } setQuery={setQuery} - to={timelineId === ACTIVE_TIMELINE_REDUX_ID ? activeTimelineTo : to} + timelineId={timelineId} + to={timelineId === TimelineId.active ? activeTimelineTo : to} toggleTopN={toggleTopN} onFilterAdded={onFilterAdded} value={value} diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx index 0ccb7e1e72f1f..7d19bf21271aa 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx @@ -5,7 +5,7 @@ */ import { EuiButtonIcon, EuiSuperSelect } from '@elastic/eui'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { ActionCreator } from 'typescript-fsa'; @@ -67,6 +67,7 @@ export interface Props { refetch: inputsModel.Refetch; }) => void; to: number; + timelineId?: string; toggleTopN: () => void; onFilterAdded?: () => void; value?: string[] | string | null; @@ -89,12 +90,17 @@ const TopNComponent: React.FC = ({ setAbsoluteRangeDatePicker, setAbsoluteRangeDatePickerTarget, setQuery, + timelineId, to, toggleTopN, }) => { const [view, setView] = useState(defaultView); const onViewSelected = useCallback((value: string) => setView(value as EventType), [setView]); + useEffect(() => { + setView(defaultView); + }, [defaultView]); + const headerChildren = useMemo( () => ( = ({ setAbsoluteRangeDatePickerTarget={setAbsoluteRangeDatePickerTarget} setQuery={setQuery} showSpacer={false} + timelineId={timelineId} to={to} /> ) : ( @@ -145,6 +152,7 @@ const TopNComponent: React.FC = ({ setAbsoluteRangeDatePicker={setAbsoluteRangeDatePicker} setAbsoluteRangeDatePickerTarget={setAbsoluteRangeDatePickerTarget} setQuery={setQuery} + timelineId={timelineId} to={to} /> )} diff --git a/x-pack/plugins/security_solution/public/common/components/with_hover_actions/index.tsx b/x-pack/plugins/security_solution/public/common/components/with_hover_actions/index.tsx index 8679dae448332..361779a4a33b2 100644 --- a/x-pack/plugins/security_solution/public/common/components/with_hover_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/with_hover_actions/index.tsx @@ -5,7 +5,7 @@ */ import { EuiPopover } from '@elastic/eui'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { IS_DRAGGING_CLASS_NAME } from '../drag_and_drop/helpers'; @@ -22,6 +22,7 @@ interface Props { * Always show the hover menu contents (default: false) */ alwaysShow?: boolean; + closePopOverTrigger?: boolean; /** * The contents of the hover menu. It is highly recommended you wrap this * content in a `div` with `position: absolute` to prevent it from effecting @@ -47,7 +48,8 @@ interface Props { * provides a signal to the content that the user is in a hover state. */ export const WithHoverActions = React.memo( - ({ alwaysShow = false, hoverContent, render }) => { + ({ alwaysShow = false, closePopOverTrigger, hoverContent, render }) => { + const [isOpen, setIsOpen] = useState(hoverContent != null && alwaysShow); const [showHoverContent, setShowHoverContent] = useState(false); const onMouseEnter = useCallback(() => { // NOTE: the following read from the DOM is expensive, but not as @@ -64,10 +66,16 @@ export const WithHoverActions = React.memo( const content = useMemo(() => <>{render(showHoverContent)}, [render, showHoverContent]); - const isOpen = hoverContent != null && (showHoverContent || alwaysShow); + useEffect(() => { + setIsOpen(hoverContent != null && (showHoverContent || alwaysShow)); + }, [hoverContent, showHoverContent, alwaysShow]); - const popover = useMemo(() => { - return ( + useEffect(() => { + setShowHoverContent(false); + }, [closePopOverTrigger]); + + return ( +
( isOpen={isOpen} panelPaddingSize={!alwaysShow ? 's' : 'none'} > - {isOpen ? hoverContent : null} + {isOpen ? <>{hoverContent} : null} - ); - }, [content, onMouseLeave, isOpen, alwaysShow, hoverContent]); - - return ( -
- {popover}
); } diff --git a/x-pack/plugins/security_solution/public/common/containers/source/index.tsx b/x-pack/plugins/security_solution/public/common/containers/source/index.tsx index 9aa3b007511a1..4f42f20c45ae1 100644 --- a/x-pack/plugins/security_solution/public/common/containers/source/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/source/index.tsx @@ -97,7 +97,7 @@ export const useWithSource = ( const [configIndex] = useUiSetting$(DEFAULT_INDEX_KEY); const defaultIndex = useMemo(() => { if (indexToAdd != null && !isEmpty(indexToAdd)) { - return [...(!onlyCheckIndexToAdd ? configIndex : []), ...indexToAdd]; + return onlyCheckIndexToAdd ? indexToAdd : [...configIndex, ...indexToAdd]; } return configIndex; }, [configIndex, indexToAdd, onlyCheckIndexToAdd]); @@ -135,41 +135,32 @@ export const useWithSource = ( }, }, }); - if (!isSubscribed) { - return setState((prevState) => ({ - ...prevState, + + if (isSubscribed) { + setState({ loading: false, - })); + indicesExist: indicesExistOrDataTemporarilyUnavailable( + get('data.source.status.indicesExist', result) + ), + browserFields: getBrowserFields( + defaultIndex.join(), + get('data.source.status.indexFields', result) + ), + indexPattern: getIndexFields( + defaultIndex.join(), + get('data.source.status.indexFields', result) + ), + errorMessage: null, + }); } - - setState({ - loading: false, - indicesExist: indicesExistOrDataTemporarilyUnavailable( - get('data.source.status.indicesExist', result) - ), - browserFields: getBrowserFields( - defaultIndex.join(), - get('data.source.status.indexFields', result) - ), - indexPattern: getIndexFields( - defaultIndex.join(), - get('data.source.status.indexFields', result) - ), - errorMessage: null, - }); } catch (error) { - if (!isSubscribed) { - return setState((prevState) => ({ + if (isSubscribed) { + setState((prevState) => ({ ...prevState, loading: false, + errorMessage: error.message, })); } - - setState((prevState) => ({ - ...prevState, - loading: false, - errorMessage: error.message, - })); } } diff --git a/x-pack/plugins/security_solution/public/common/lib/keury/index.test.ts b/x-pack/plugins/security_solution/public/common/lib/keury/index.test.ts index 4e2b11b24e5a9..e84438581fcde 100644 --- a/x-pack/plugins/security_solution/public/common/lib/keury/index.test.ts +++ b/x-pack/plugins/security_solution/public/common/lib/keury/index.test.ts @@ -26,33 +26,33 @@ describe('Kuery escape', () => { expect(escapeKuery(value)).to.be(expected); }); - it('should escape keywords', () => { + it('should NOT escape keywords', () => { const value = 'foo and bar or baz not qux'; - const expected = 'foo \\and bar \\or baz \\not qux'; + const expected = 'foo and bar or baz not qux'; expect(escapeKuery(value)).to.be(expected); }); - it('should escape keywords next to each other', () => { + it('should NOT escape keywords next to each other', () => { const value = 'foo and bar or not baz'; - const expected = 'foo \\and bar \\or \\not baz'; + const expected = 'foo and bar or not baz'; expect(escapeKuery(value)).to.be(expected); }); it('should not escape keywords without surrounding spaces', () => { const value = 'And this has keywords, or does it not?'; - const expected = 'And this has keywords, \\or does it not?'; + const expected = 'And this has keywords, or does it not?'; expect(escapeKuery(value)).to.be(expected); }); - it('should escape uppercase keywords', () => { + it('should NOT escape uppercase keywords', () => { const value = 'foo AND bar'; - const expected = 'foo \\AND bar'; + const expected = 'foo AND bar'; expect(escapeKuery(value)).to.be(expected); }); - it('should escape both keywords and special characters', () => { + it('should escape special characters and NOT keywords', () => { const value = 'Hello, "world", and to meet you!'; - const expected = 'Hello, \\"world\\", \\and to meet you!'; + const expected = 'Hello, \\"world\\", and to meet you!'; expect(escapeKuery(value)).to.be(expected); }); diff --git a/x-pack/plugins/security_solution/public/common/lib/keury/index.ts b/x-pack/plugins/security_solution/public/common/lib/keury/index.ts index bd4d96a98c815..b06a6ec10f48e 100644 --- a/x-pack/plugins/security_solution/public/common/lib/keury/index.ts +++ b/x-pack/plugins/security_solution/public/common/lib/keury/index.ts @@ -75,11 +75,12 @@ const escapeWhitespace = (val: string) => const escapeSpecialCharacters = (val: string) => val.replace(/["]/g, '\\$&'); // $& means the whole matched string // See the Keyword rule in kuery.peg -const escapeAndOr = (val: string) => val.replace(/(\s+)(and|or)(\s+)/gi, '$1\\$2$3'); +// I do not think that we need that anymore since we are doing a full match_phrase all the time now => return `"${escapeKuery(val)}"`; +// const escapeAndOr = (val: string) => val.replace(/(\s+)(and|or)(\s+)/gi, '$1\\$2$3'); -const escapeNot = (val: string) => val.replace(/not(\s+)/gi, '\\$&'); +// const escapeNot = (val: string) => val.replace(/not(\s+)/gi, '\\$&'); -export const escapeKuery = flow(escapeSpecialCharacters, escapeAndOr, escapeNot, escapeWhitespace); +export const escapeKuery = flow(escapeSpecialCharacters, escapeWhitespace); export const convertToBuildEsQuery = ({ config, diff --git a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx index fe3f9f8ecda33..7d42f744a2613 100644 --- a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx @@ -60,6 +60,7 @@ interface Props { refetch: inputsModel.Refetch; }) => void; showSpacer?: boolean; + timelineId?: string; to: number; } @@ -81,6 +82,7 @@ const EventsByDatasetComponent: React.FC = ({ setAbsoluteRangeDatePickerTarget, setQuery, showSpacer = true, + timelineId, to, }) => { // create a unique, but stable (across re-renders) query id @@ -177,6 +179,7 @@ const EventsByDatasetComponent: React.FC = ({ showSpacer={showSpacer} sourceId="default" startDate={from} + timelineId={timelineId} type={HostsType.page} {...eventsByDatasetHistogramConfigs} title={onlyField != null ? i18n.TOP(onlyField) : eventsByDatasetHistogramConfigs.title} diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx index 5010fd9c06eb7..41152dabe2ad8 100644 --- a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx @@ -37,6 +37,7 @@ interface Props { loading: boolean; refetch: inputsModel.Refetch; }) => void; + timelineId?: string; to: number; } @@ -50,6 +51,7 @@ const SignalsByCategoryComponent: React.FC = ({ setAbsoluteRangeDatePicker, setAbsoluteRangeDatePickerTarget = 'global', setQuery, + timelineId, to, }) => { const { signalIndexName } = useSignalIndex(); @@ -83,6 +85,7 @@ const SignalsByCategoryComponent: React.FC = ({ showLinkToAlerts={onlyField == null ? true : false} stackByOptions={onlyField == null ? alertsHistogramOptions : undefined} legendPosition={'right'} + timelineId={timelineId} to={to} title={i18n.ALERT_COUNT} updateDateRange={updateDateRangeCallback} diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_items.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_items.tsx index aaad9cf145ab7..8922434746234 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_items.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_items.tsx @@ -152,7 +152,6 @@ export const getFieldItems = ({ fieldId={field.name || ''} highlight={highlight} onUpdateColumns={onUpdateColumns} - timelineId={timelineId} /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx index da0cbb99b8671..1f917c664e813 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.test.tsx @@ -24,7 +24,6 @@ const defaultProps = { }), fieldId: timestampFieldId, onUpdateColumns: jest.fn(), - timelineId: 'timeline-id', }; describe('FieldName', () => { @@ -46,8 +45,7 @@ describe('FieldName', () => { ); - - wrapper.simulate('mouseenter'); + wrapper.find('div').at(1).simulate('mouseenter'); wrapper.update(); expect(wrapper.find('[data-test-subj="copy-to-clipboard"]').exists()).toBe(true); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx index 985c8b35094ef..62e41d967cb9a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/field_name.tsx @@ -5,13 +5,16 @@ */ import { EuiHighlight, EuiText } from '@elastic/eui'; -import React, { useCallback, useState, useMemo } from 'react'; +import React, { useCallback, useState, useMemo, useRef } from 'react'; import styled from 'styled-components'; import { ColumnHeaderOptions } from '../../../timelines/store/timeline/model'; import { OnUpdateColumns } from '../timeline/events'; import { WithHoverActions } from '../../../common/components/with_hover_actions'; -import { DraggableWrapperHoverContent } from '../../../common/components/drag_and_drop/draggable_wrapper_hover_content'; +import { + DraggableWrapperHoverContent, + useGetTimelineId, +} from '../../../common/components/drag_and_drop/draggable_wrapper_hover_content'; /** * The name of a (draggable) field @@ -77,23 +80,34 @@ export const FieldName = React.memo<{ fieldId: string; highlight?: string; onUpdateColumns: OnUpdateColumns; - timelineId: string; -}>(({ fieldId, highlight = '', timelineId }) => { +}>(({ fieldId, highlight = '' }) => { + const containerRef = useRef(null); + const [closePopOverTrigger, setClosePopOverTrigger] = useState(false); const [showTopN, setShowTopN] = useState(false); + const [goGetTimelineId, setGoGetTimelineId] = useState(false); + const timelineIdFind = useGetTimelineId(containerRef, goGetTimelineId); + const toggleTopN = useCallback(() => { - setShowTopN(!showTopN); - }, [setShowTopN, showTopN]); + setShowTopN((prevShowTopN) => !prevShowTopN); + }, []); + + const handleClosePopOverTrigger = useCallback( + () => setClosePopOverTrigger((prevClosePopOverTrigger) => !prevClosePopOverTrigger), + [] + ); const hoverContent = useMemo( () => ( ), - [fieldId, showTopN, toggleTopN, timelineId] + [fieldId, handleClosePopOverTrigger, showTopN, timelineIdFind, toggleTopN] ); const render = useCallback( @@ -109,7 +123,16 @@ export const FieldName = React.memo<{ [fieldId, highlight] ); - return ; + return ( +
+ +
+ ); }); FieldName.displayName = 'FieldName'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/manage_timeline/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/manage_timeline/index.tsx index be655f7465a1b..3b40c36fccd16 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/manage_timeline/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/manage_timeline/index.tsx @@ -57,6 +57,11 @@ type ActionManageTimeline = id: string; payload: boolean; } + | { + type: 'SET_INDEX_TO_ADD'; + id: string; + payload: string[]; + } | { type: 'SET_TIMELINE_ACTIONS'; id: string; @@ -81,7 +86,10 @@ export const timelineDefaults = { title: i18n.EVENTS, unit: (n: number) => i18n.UNIT(n), }; -const reducerManageTimeline = (state: ManageTimelineById, action: ActionManageTimeline) => { +const reducerManageTimeline = ( + state: ManageTimelineById, + action: ActionManageTimeline +): ManageTimelineById => { switch (action.type) { case 'INITIALIZE_TIMELINE': return { @@ -91,7 +99,15 @@ const reducerManageTimeline = (state: ManageTimelineById, action: ActionManageTi ...state[action.id], ...action.payload, }, - }; + } as ManageTimelineById; + case 'SET_INDEX_TO_ADD': + return { + ...state, + [action.id]: { + ...state[action.id], + indexToAdd: action.payload, + }, + } as ManageTimelineById; case 'SET_TIMELINE_ACTIONS': case 'SET_TIMELINE_FILTER_MANAGER': return { @@ -100,7 +116,7 @@ const reducerManageTimeline = (state: ManageTimelineById, action: ActionManageTi ...state[action.id], ...action.payload, }, - }; + } as ManageTimelineById; case 'SET_IS_LOADING': return { ...state, @@ -108,7 +124,7 @@ const reducerManageTimeline = (state: ManageTimelineById, action: ActionManageTi ...state[action.id], isLoading: action.payload, }, - }; + } as ManageTimelineById; default: return state; } @@ -119,6 +135,7 @@ interface UseTimelineManager { getTimelineFilterManager: (id: string) => FilterManager | undefined; initializeTimeline: (newTimeline: ManageTimelineInit) => void; isManagedTimeline: (id: string) => boolean; + setIndexToAdd: (indexToAddArgs: { id: string; indexToAdd: string[] }) => void; setIsTimelineLoading: (isLoadingArgs: { id: string; isLoading: boolean }) => void; setTimelineRowActions: (actionsArgs: { id: string; @@ -129,10 +146,9 @@ interface UseTimelineManager { } const useTimelineManager = (manageTimelineForTesting?: ManageTimelineById): UseTimelineManager => { - const [state, dispatch] = useReducer( - reducerManageTimeline, - manageTimelineForTesting ?? initManageTimeline - ); + const [state, dispatch] = useReducer< + (state: ManageTimelineById, action: ActionManageTimeline) => ManageTimelineById + >(reducerManageTimeline, manageTimelineForTesting ?? initManageTimeline); const initializeTimeline = useCallback((newTimeline: ManageTimelineInit) => { dispatch({ @@ -183,8 +199,16 @@ const useTimelineManager = (manageTimelineForTesting?: ManageTimelineById): UseT [] ); + const setIndexToAdd = useCallback(({ id, indexToAdd }: { id: string; indexToAdd: string[] }) => { + dispatch({ + type: 'SET_INDEX_TO_ADD', + id, + payload: indexToAdd, + }); + }, []); + const getTimelineFilterManager = useCallback( - (id: string): FilterManager | undefined => state[id].filterManager, + (id: string): FilterManager | undefined => state[id]?.filterManager, [state] ); const getManageTimelineById = useCallback( @@ -195,8 +219,7 @@ const useTimelineManager = (manageTimelineForTesting?: ManageTimelineById): UseT initializeTimeline({ id }); return { ...timelineDefaults, id }; }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [state] + [initializeTimeline, state] ); const isManagedTimeline = useCallback((id: string): boolean => state[id] != null, [state]); @@ -205,6 +228,7 @@ const useTimelineManager = (manageTimelineForTesting?: ManageTimelineById): UseT getTimelineFilterManager, initializeTimeline, isManagedTimeline, + setIndexToAdd, setIsTimelineLoading, setTimelineRowActions, setTimelineFilterManager, @@ -214,6 +238,7 @@ const useTimelineManager = (manageTimelineForTesting?: ManageTimelineById): UseT const init = { getManageTimelineById: (id: string) => ({ ...timelineDefaults, id }), getTimelineFilterManager: () => undefined, + setIndexToAdd: () => undefined, isManagedTimeline: () => false, initializeTimeline: () => noop, setIsTimelineLoading: () => noop, diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx index 51bf883ed2d61..43ea5e905ca8b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx @@ -17,6 +17,7 @@ import { columnRenderers, rowRenderers } from './renderers'; import { Sort } from './sort'; import { wait } from '../../../../common/lib/helpers'; import { useMountAppended } from '../../../../common/utils/use_mount_appended'; +import { SELECTOR_TIMELINE_BODY_CLASS_NAME } from '../styles'; const testBodyHeight = 700; const mockGetNotesByIds = (eventId: string[]) => []; @@ -133,6 +134,20 @@ describe('Body', () => { ).toEqual(true); }); }, 20000); + + test(`it add attribute data-timeline-id in ${SELECTOR_TIMELINE_BODY_CLASS_NAME}`, () => { + const wrapper = mount( + + + + ); + expect( + wrapper + .find(`[data-timeline-id="timeline-test"].${SELECTOR_TIMELINE_BODY_CLASS_NAME}`) + .first() + .exists() + ).toEqual(true); + }); }); describe('action on event', () => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.tsx index 46895c86de084..6a296170fffde 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.tsx @@ -139,6 +139,7 @@ export const Body = React.memo( )} ( pinnedEventIds={pinnedEventIds} rowRenderers={showRowRenderers ? rowRenderers : [plainRowRenderer]} selectedEventIds={selectedEventIds} - show={id === ACTIVE_TIMELINE_REDUX_ID ? show : true} + show={id === TimelineId.active ? show : true} showCheckboxes={showCheckboxes} sort={sort} toggleColumn={toggleColumn} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx index d1a58dafcb328..47d848021ba43 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx @@ -14,16 +14,17 @@ import { IS_TIMELINE_FIELD_DRAGGING_CLASS_NAME } from '../../../common/component /** * TIMELINE BODY */ +export const SELECTOR_TIMELINE_BODY_CLASS_NAME = 'securitySolutionTimeline__body'; // SIDE EFFECT: the following creates a global class selector export const TimelineBodyGlobalStyle = createGlobalStyle` - body.${IS_TIMELINE_FIELD_DRAGGING_CLASS_NAME} .siemTimeline__body { + body.${IS_TIMELINE_FIELD_DRAGGING_CLASS_NAME} .${SELECTOR_TIMELINE_BODY_CLASS_NAME} { overflow: hidden; } `; export const TimelineBody = styled.div.attrs(({ className = '' }) => ({ - className: `siemTimeline__body ${className}`, + className: `${SELECTOR_TIMELINE_BODY_CLASS_NAME} ${className}`, }))<{ bodyHeight?: number; visible: boolean }>` height: ${({ bodyHeight }) => (bodyHeight ? `${bodyHeight}px` : 'auto')}; overflow: auto; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/timeline.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/timeline.tsx index 07d4b004d2eda..18deaf0158723 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/timeline.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/timeline.tsx @@ -174,6 +174,7 @@ export const TimelineComponent: React.FC = ({ const [isQueryLoading, setIsQueryLoading] = useState(false); const { initializeTimeline, + setIndexToAdd, setIsTimelineLoading, setTimelineFilterManager, setTimelineRowActions, @@ -188,12 +189,14 @@ export const TimelineComponent: React.FC = ({ }, []); useEffect(() => { setIsTimelineLoading({ id, isLoading: isQueryLoading || loadingIndexName }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [loadingIndexName, isQueryLoading]); + }, [loadingIndexName, id, isQueryLoading, setIsTimelineLoading]); useEffect(() => { setTimelineFilterManager({ id, filterManager }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [filterManager]); + }, [filterManager, id, setTimelineFilterManager]); + + useEffect(() => { + setIndexToAdd({ id, indexToAdd }); + }, [id, indexToAdd, setIndexToAdd]); return ( From c3cacba7e2dead10efdf32303873b3c10daa345c Mon Sep 17 00:00:00 2001 From: Lee Drengenberg Date: Fri, 3 Jul 2020 13:14:18 -0500 Subject: [PATCH 39/59] logout from transform_poweruser user in after method of transform tests (#70644) Co-authored-by: Elastic Machine --- x-pack/test/functional/apps/transform/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/transform/index.ts b/x-pack/test/functional/apps/transform/index.ts index 04a751279bf3c..6dd22a1f4a204 100644 --- a/x-pack/test/functional/apps/transform/index.ts +++ b/x-pack/test/functional/apps/transform/index.ts @@ -5,9 +5,10 @@ */ import { FtrProviderContext } from '../../ftr_provider_context'; -export default function ({ getService, loadTestFile }: FtrProviderContext) { +export default function ({ getService, loadTestFile, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const transform = getService('transform'); + const PageObjects = getPageObjects(['security']); describe('transform', function () { this.tags(['ciGroup9', 'transform']); @@ -30,6 +31,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await esArchiver.unload('ml/ecommerce'); await transform.testResources.resetKibanaTimeZone(); + await PageObjects.security.logout(); }); loadTestFile(require.resolve('./creation_index_pattern')); From fd152689f8caeacfb1d3389739d80b9ac66d7106 Mon Sep 17 00:00:00 2001 From: Dmitry Lemeshko Date: Fri, 3 Jul 2020 23:09:02 +0200 Subject: [PATCH 40/59] [functional tests] test url field formatter on dashboard and discover (#70736) Co-authored-by: Elastic Machine --- test/functional/apps/dashboard/index.js | 1 + .../apps/dashboard/url_field_formatter.ts | 91 +++++++++++++++++++ .../page_objects/visualize_chart_page.ts | 14 +++ 3 files changed, 106 insertions(+) create mode 100644 test/functional/apps/dashboard/url_field_formatter.ts diff --git a/test/functional/apps/dashboard/index.js b/test/functional/apps/dashboard/index.js index 1e310c1ddd268..5a30456bd59ab 100644 --- a/test/functional/apps/dashboard/index.js +++ b/test/functional/apps/dashboard/index.js @@ -49,6 +49,7 @@ export default function ({ getService, loadTestFile }) { after(unloadCurrentData); loadTestFile(require.resolve('./empty_dashboard')); + loadTestFile(require.resolve('./url_field_formatter')); loadTestFile(require.resolve('./embeddable_rendering')); loadTestFile(require.resolve('./create_and_add_embeddables')); loadTestFile(require.resolve('./edit_embeddable_redirects')); diff --git a/test/functional/apps/dashboard/url_field_formatter.ts b/test/functional/apps/dashboard/url_field_formatter.ts new file mode 100644 index 0000000000000..9b05b9b777b94 --- /dev/null +++ b/test/functional/apps/dashboard/url_field_formatter.ts @@ -0,0 +1,91 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { WebElementWrapper } from 'test/functional/services/lib/web_element_wrapper'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const { common, dashboard, settings, timePicker, visChart } = getPageObjects([ + 'common', + 'dashboard', + 'settings', + 'timePicker', + 'visChart', + ]); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const testSubjects = getService('testSubjects'); + const browser = getService('browser'); + const fieldName = 'clientip'; + + const clickFieldAndCheckUrl = async (fieldLink: WebElementWrapper) => { + const fieldValue = await fieldLink.getVisibleText(); + await fieldLink.click(); + const windowHandlers = await browser.getAllWindowHandles(); + expect(windowHandlers.length).to.equal(2); + await browser.switchToWindow(windowHandlers[1]); + const currentUrl = await browser.getCurrentUrl(); + const fieldUrl = common.getHostPort() + '/app/' + fieldValue; + expect(currentUrl).to.equal(fieldUrl); + }; + + describe('Changing field formatter to Url', () => { + before(async function () { + await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.uiSettings.replace({ + defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', + }); + await common.navigateToApp('settings'); + await settings.clickKibanaIndexPatterns(); + await settings.clickIndexPatternLogstash(); + await settings.filterField(fieldName); + await settings.openControlsByName(fieldName); + await settings.setFieldFormat('url'); + await settings.controlChangeSave(); + }); + + it('applied on dashboard', async () => { + await common.navigateToApp('dashboard'); + await dashboard.loadSavedDashboard('dashboard with everything'); + await dashboard.waitForRenderComplete(); + const fieldLink = await visChart.getFieldLinkInVisTable(`${fieldName}: Descending`, 1); + await clickFieldAndCheckUrl(fieldLink); + }); + + it('applied on discover', async () => { + await common.navigateToApp('discover'); + await timePicker.setAbsoluteRange( + 'Sep 19, 2017 @ 06:31:44.000', + 'Sep 23, 2018 @ 18:31:44.000' + ); + await testSubjects.click('docTableExpandToggleColumn'); + const fieldLink = await testSubjects.find(`tableDocViewRow-${fieldName}-value`); + await clickFieldAndCheckUrl(fieldLink); + }); + + afterEach(async function () { + const windowHandlers = await browser.getAllWindowHandles(); + if (windowHandlers.length > 1) { + await browser.closeCurrentWindow(); + await browser.switchToWindow(windowHandlers[0]); + } + }); + }); +} diff --git a/test/functional/page_objects/visualize_chart_page.ts b/test/functional/page_objects/visualize_chart_page.ts index 673fba0c346b8..590631ad48b00 100644 --- a/test/functional/page_objects/visualize_chart_page.ts +++ b/test/functional/page_objects/visualize_chart_page.ts @@ -302,6 +302,20 @@ export function VisualizeChartPageProvider({ getService, getPageObjects }: FtrPr return element.getVisibleText(); } + public async getFieldLinkInVisTable(fieldName: string, rowIndex: number = 1) { + const tableVis = await testSubjects.find('tableVis'); + const $ = await tableVis.parseDomContent(); + const headers = $('span[ng-bind="::col.title"]') + .toArray() + .map((header: any) => $(header).text()); + const fieldColumnIndex = headers.indexOf(fieldName); + return await find.byCssSelector( + `[data-test-subj="paginated-table-body"] tr:nth-of-type(${rowIndex}) td:nth-of-type(${ + fieldColumnIndex + 1 + }) a` + ); + } + /** * If you are writing new tests, you should rather look into getTableVisContent method instead. * @deprecated Use getTableVisContent instead. From e429670c3574188676e2ea69a7272134fa04b203 Mon Sep 17 00:00:00 2001 From: Madison Caldwell Date: Sat, 4 Jul 2020 19:23:07 -0400 Subject: [PATCH 41/59] [Security Solution][Endpoint] Update to new manifest format (without compression) (#70752) * Stateless exception list translation with improved runtime checks * use flatMap and reduce to simplify logic * Update to new manifest format * Fix test fixture SO data type * Fix another test fixture data type * Fix sha256 reference in artifact_client --- .../common/endpoint/schema/common.ts | 13 +- .../common/endpoint/schema/manifest.ts | 21 ++- .../server/endpoint/ingest_integration.ts | 2 + .../server/endpoint/lib/artifacts/common.ts | 4 +- .../server/endpoint/lib/artifacts/lists.ts | 125 ++++++++++-------- .../endpoint/lib/artifacts/manifest.test.ts | 32 +++-- .../lib/artifacts/manifest_entry.test.ts | 18 ++- .../endpoint/lib/artifacts/manifest_entry.ts | 30 +++-- .../lib/artifacts/saved_object_mappings.ts | 24 +++- .../server/endpoint/lib/artifacts/task.ts | 2 +- .../endpoint/schemas/artifacts/lists.ts | 17 ++- .../schemas/artifacts/saved_objects.ts | 19 ++- .../services/artifacts/artifact_client.ts | 2 +- .../manifest_manager/manifest_manager.test.ts | 10 +- .../manifest_manager/manifest_manager.ts | 15 +-- .../endpoint/artifacts/api_feature/data.json | 21 +-- 16 files changed, 234 insertions(+), 121 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/common.ts b/x-pack/plugins/security_solution/common/endpoint/schema/common.ts index 7f8c938d54feb..fdb2570314cd0 100644 --- a/x-pack/plugins/security_solution/common/endpoint/schema/common.ts +++ b/x-pack/plugins/security_solution/common/endpoint/schema/common.ts @@ -6,6 +6,15 @@ import * as t from 'io-ts'; +export const compressionAlgorithm = t.keyof({ + none: null, + zlib: null, +}); + +export const encryptionAlgorithm = t.keyof({ + none: null, +}); + export const identifier = t.string; export const manifestVersion = t.string; @@ -15,8 +24,8 @@ export const manifestSchemaVersion = t.keyof({ }); export type ManifestSchemaVersion = t.TypeOf; +export const relativeUrl = t.string; + export const sha256 = t.string; export const size = t.number; - -export const url = t.string; diff --git a/x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts b/x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts index 470e9b13ef78a..2f03895d91c74 100644 --- a/x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts +++ b/x-pack/plugins/security_solution/common/endpoint/schema/manifest.ts @@ -5,13 +5,26 @@ */ import * as t from 'io-ts'; -import { identifier, manifestSchemaVersion, manifestVersion, sha256, size, url } from './common'; +import { + compressionAlgorithm, + encryptionAlgorithm, + identifier, + manifestSchemaVersion, + manifestVersion, + relativeUrl, + sha256, + size, +} from './common'; export const manifestEntrySchema = t.exact( t.type({ - url, - sha256, - size, + relative_url: relativeUrl, + precompress_sha256: sha256, + precompress_size: size, + postcompress_sha256: sha256, + postcompress_size: size, + compression_algorithm: compressionAlgorithm, + encryption_algorithm: encryptionAlgorithm, }) ); diff --git a/x-pack/plugins/security_solution/server/endpoint/ingest_integration.ts b/x-pack/plugins/security_solution/server/endpoint/ingest_integration.ts index 67a331f4ba677..ace5aec77ed2c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/ingest_integration.ts +++ b/x-pack/plugins/security_solution/server/endpoint/ingest_integration.ts @@ -57,6 +57,8 @@ export const getPackageConfigCreateCallback = ( try { return updatedPackageConfig; } finally { + // TODO: confirm creation of package config + // then commit. await manifestManager.commit(wrappedManifest); } }; diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts index 4c3153ca0ef11..b6a5bed9078ab 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/common.ts @@ -6,12 +6,12 @@ export const ArtifactConstants = { GLOBAL_ALLOWLIST_NAME: 'endpoint-exceptionlist', - SAVED_OBJECT_TYPE: 'endpoint:exceptions-artifact', + SAVED_OBJECT_TYPE: 'endpoint:user-artifact', SUPPORTED_OPERATING_SYSTEMS: ['linux', 'macos', 'windows'], SCHEMA_VERSION: '1.0.0', }; export const ManifestConstants = { - SAVED_OBJECT_TYPE: 'endpoint:exceptions-manifest', + SAVED_OBJECT_TYPE: 'endpoint:user-artifact-manifest', SCHEMA_VERSION: '1.0.0', }; 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 7fd057afdbd55..2abb72234fecd 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,22 +7,20 @@ import { createHash } from 'crypto'; import { validate } from '../../../../common/validate'; -import { - Entry, - EntryNested, - EntryMatch, - EntryMatchAny, -} from '../../../../../lists/common/schemas/types/entries'; +import { Entry, EntryNested } from '../../../../../lists/common/schemas/types/entries'; import { FoundExceptionListItemSchema } from '../../../../../lists/common/schemas/response/found_exception_list_item_schema'; import { ExceptionListClient } from '../../../../../lists/server'; import { InternalArtifactSchema, TranslatedEntry, - TranslatedEntryMatch, - TranslatedEntryMatchAny, - TranslatedEntryNested, WrappedTranslatedExceptionList, wrappedExceptionList, + TranslatedEntryNestedEntry, + translatedEntryNestedEntry, + translatedEntry as translatedEntryType, + TranslatedEntryMatcher, + translatedEntryMatchMatcher, + translatedEntryMatchAnyMatcher, } from '../../schemas'; import { ArtifactConstants } from './common'; @@ -36,11 +34,14 @@ export async function buildArtifact( return { identifier: `${ArtifactConstants.GLOBAL_ALLOWLIST_NAME}-${os}-${schemaVersion}`, - sha256, - encoding: 'application/json', + compressionAlgorithm: 'none', + encryptionAlgorithm: 'none', + decompressedSha256: sha256, + compressedSha256: sha256, + decompressedSize: exceptionsBuffer.byteLength, + compressedSize: exceptionsBuffer.byteLength, created: Date.now(), body: exceptionsBuffer.toString('base64'), - size: exceptionsBuffer.byteLength, }; } @@ -92,66 +93,80 @@ export function translateToEndpointExceptions( exc: FoundExceptionListItemSchema, schemaVersion: string ): TranslatedEntry[] { - const translatedList: TranslatedEntry[] = []; - if (schemaVersion === '1.0.0') { - exc.data.forEach((list) => { - list.entries.forEach((entry) => { - const tEntry = translateEntry(schemaVersion, entry); - if (tEntry !== undefined) { - translatedList.push(tEntry); + return exc.data + .flatMap((list) => { + return list.entries; + }) + .reduce((entries: TranslatedEntry[], entry) => { + const translatedEntry = translateEntry(schemaVersion, entry); + if (translatedEntry !== undefined && translatedEntryType.is(translatedEntry)) { + entries.push(translatedEntry); } - }); - }); + return entries; + }, []); } else { throw new Error('unsupported schemaVersion'); } - return translatedList; +} + +function getMatcherFunction(field: string, matchAny?: boolean): TranslatedEntryMatcher { + return matchAny + ? field.endsWith('.text') + ? 'exact_caseless_any' + : 'exact_cased_any' + : field.endsWith('.text') + ? 'exact_caseless' + : 'exact_cased'; +} + +function normalizeFieldName(field: string): string { + return field.endsWith('.text') ? field.substring(0, field.length - 5) : field; } function translateEntry( schemaVersion: string, entry: Entry | EntryNested ): TranslatedEntry | undefined { - let translatedEntry; switch (entry.type) { case 'nested': { - const e = (entry as unknown) as EntryNested; - const nestedEntries: TranslatedEntry[] = []; - for (const nestedEntry of e.entries) { - const translation = translateEntry(schemaVersion, nestedEntry); - if (translation !== undefined) { - nestedEntries.push(translation); - } - } - translatedEntry = { + const nestedEntries = entry.entries.reduce( + (entries: TranslatedEntryNestedEntry[], nestedEntry) => { + const translatedEntry = translateEntry(schemaVersion, nestedEntry); + if (nestedEntry !== undefined && translatedEntryNestedEntry.is(translatedEntry)) { + entries.push(translatedEntry); + } + return entries; + }, + [] + ); + return { entries: nestedEntries, - field: e.field, + field: entry.field, type: 'nested', - } as TranslatedEntryNested; - break; + }; } case 'match': { - const e = (entry as unknown) as EntryMatch; - translatedEntry = { - field: e.field.endsWith('.text') ? e.field.substring(0, e.field.length - 5) : e.field, - operator: e.operator, - type: e.field.endsWith('.text') ? 'exact_caseless' : 'exact_cased', - value: e.value, - } as TranslatedEntryMatch; - break; + const matcher = getMatcherFunction(entry.field); + return translatedEntryMatchMatcher.is(matcher) + ? { + field: normalizeFieldName(entry.field), + operator: entry.operator, + type: matcher, + value: entry.value, + } + : undefined; + } + case 'match_any': { + const matcher = getMatcherFunction(entry.field, true); + return translatedEntryMatchAnyMatcher.is(matcher) + ? { + field: normalizeFieldName(entry.field), + operator: entry.operator, + type: matcher, + value: entry.value, + } + : undefined; } - case 'match_any': - { - const e = (entry as unknown) as EntryMatchAny; - translatedEntry = { - field: e.field.endsWith('.text') ? e.field.substring(0, e.field.length - 5) : e.field, - operator: e.operator, - type: e.field.endsWith('.text') ? 'exact_caseless_any' : 'exact_cased_any', - value: e.value, - } as TranslatedEntryMatchAny; - } - break; } - return translatedEntry || undefined; } diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts index 0434e3d8ffcb2..da8a449e1b026 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.test.ts @@ -55,21 +55,33 @@ describe('manifest', () => { expect(manifest1.toEndpointFormat()).toStrictEqual({ artifacts: { 'endpoint-exceptionlist-linux-1.0.0': { - sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', - size: 268, - url: + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + postcompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + precompress_size: 268, + postcompress_size: 268, + relative_url: '/api/endpoint/artifacts/download/endpoint-exceptionlist-linux-1.0.0/70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', }, 'endpoint-exceptionlist-macos-1.0.0': { - sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', - size: 268, - url: + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + postcompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + precompress_size: 268, + postcompress_size: 268, + relative_url: '/api/endpoint/artifacts/download/endpoint-exceptionlist-macos-1.0.0/70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', }, 'endpoint-exceptionlist-windows-1.0.0': { - sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', - size: 268, - url: + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + postcompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + precompress_size: 268, + postcompress_size: 268, + relative_url: '/api/endpoint/artifacts/download/endpoint-exceptionlist-windows-1.0.0/70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', }, }, @@ -107,7 +119,7 @@ describe('manifest', () => { test('Manifest returns data for given artifact', async () => { const artifact = artifacts[0]; - const returned = manifest1.getArtifact(`${artifact.identifier}-${artifact.sha256}`); + const returned = manifest1.getArtifact(`${artifact.identifier}-${artifact.compressedSha256}`); expect(returned).toEqual(artifact); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts index 34bd2b0f388e1..c8cbdfc2fc5f4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.test.ts @@ -33,13 +33,17 @@ describe('manifest_entry', () => { }); test('Correct sha256 is returned', () => { - expect(manifestEntry.getSha256()).toEqual( + expect(manifestEntry.getCompressedSha256()).toEqual( + '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c' + ); + expect(manifestEntry.getDecompressedSha256()).toEqual( '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c' ); }); test('Correct size is returned', () => { - expect(manifestEntry.getSize()).toEqual(268); + expect(manifestEntry.getCompressedSize()).toEqual(268); + expect(manifestEntry.getDecompressedSize()).toEqual(268); }); test('Correct url is returned', () => { @@ -54,9 +58,13 @@ describe('manifest_entry', () => { test('Correct record is returned', () => { expect(manifestEntry.getRecord()).toEqual({ - sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', - size: 268, - url: + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + postcompress_sha256: '70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', + precompress_size: 268, + postcompress_size: 268, + relative_url: '/api/endpoint/artifacts/download/endpoint-exceptionlist-windows-1.0.0/70d2e0ee5db0073b242df9af32e64447b932b73c3e66de3a922c61a4077b1a9c', }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts index 00fd446bf14b5..860c2d7d704b2 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest_entry.ts @@ -15,23 +15,31 @@ export class ManifestEntry { } public getDocId(): string { - return `${this.getIdentifier()}-${this.getSha256()}`; + return `${this.getIdentifier()}-${this.getCompressedSha256()}`; } public getIdentifier(): string { return this.artifact.identifier; } - public getSha256(): string { - return this.artifact.sha256; + public getCompressedSha256(): string { + return this.artifact.compressedSha256; } - public getSize(): number { - return this.artifact.size; + public getDecompressedSha256(): string { + return this.artifact.decompressedSha256; + } + + public getCompressedSize(): number { + return this.artifact.compressedSize; + } + + public getDecompressedSize(): number { + return this.artifact.decompressedSize; } public getUrl(): string { - return `/api/endpoint/artifacts/download/${this.getIdentifier()}/${this.getSha256()}`; + return `/api/endpoint/artifacts/download/${this.getIdentifier()}/${this.getCompressedSha256()}`; } public getArtifact(): InternalArtifactSchema { @@ -40,9 +48,13 @@ export class ManifestEntry { public getRecord(): ManifestEntrySchema { return { - sha256: this.getSha256(), - size: this.getSize(), - url: this.getUrl(), + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: this.getDecompressedSha256(), + precompress_size: this.getDecompressedSize(), + postcompress_sha256: this.getCompressedSha256(), + postcompress_size: this.getCompressedSize(), + relative_url: this.getUrl(), }; } } diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts index d38026fbcbbd9..5e61b278e87e4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts @@ -16,11 +16,27 @@ export const exceptionsArtifactSavedObjectMappings: SavedObjectsType['mappings'] identifier: { type: 'keyword', }, - sha256: { + compressionAlgorithm: { type: 'keyword', + index: false, + }, + encryptionAlgorithm: { + type: 'keyword', + index: false, }, - encoding: { + compressedSha256: { type: 'keyword', + }, + compressedSize: { + type: 'long', + index: false, + }, + decompressedSha256: { + type: 'keyword', + index: false, + }, + decompressedSize: { + type: 'long', index: false, }, created: { @@ -31,10 +47,6 @@ export const exceptionsArtifactSavedObjectMappings: SavedObjectsType['mappings'] type: 'binary', index: false, }, - size: { - type: 'long', - index: false, - }, }, }; diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts index 08d02e70dac16..78b60e9e61f3e 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/task.ts @@ -14,7 +14,7 @@ import { EndpointAppContext } from '../../types'; export const ManifestTaskConstants = { TIMEOUT: '1m', - TYPE: 'securitySolution:endpoint:exceptions-packager', + TYPE: 'endpoint:user-artifact-packager', VERSION: '1.0.0', }; diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts index 21d1105a313e7..d071896c537bf 100644 --- a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts @@ -20,6 +20,9 @@ export const translatedEntryMatchAny = t.exact( ); export type TranslatedEntryMatchAny = t.TypeOf; +export const translatedEntryMatchAnyMatcher = translatedEntryMatchAny.type.props.type; +export type TranslatedEntryMatchAnyMatcher = t.TypeOf; + export const translatedEntryMatch = t.exact( t.type({ field: t.string, @@ -33,11 +36,23 @@ export const translatedEntryMatch = t.exact( ); export type TranslatedEntryMatch = t.TypeOf; +export const translatedEntryMatchMatcher = translatedEntryMatch.type.props.type; +export type TranslatedEntryMatchMatcher = t.TypeOf; + +export const translatedEntryMatcher = t.union([ + translatedEntryMatchMatcher, + translatedEntryMatchAnyMatcher, +]); +export type TranslatedEntryMatcher = t.TypeOf; + +export const translatedEntryNestedEntry = t.union([translatedEntryMatch, translatedEntryMatchAny]); +export type TranslatedEntryNestedEntry = t.TypeOf; + export const translatedEntryNested = t.exact( t.type({ field: t.string, type: t.keyof({ nested: null }), - entries: t.array(t.union([translatedEntryMatch, translatedEntryMatchAny])), + entries: t.array(translatedEntryNestedEntry), }) ); export type TranslatedEntryNested = t.TypeOf; diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts index 2e71ef98387f1..fe032586dda56 100644 --- a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts +++ b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/saved_objects.ts @@ -5,17 +5,26 @@ */ import * as t from 'io-ts'; -import { identifier, sha256, size } from '../../../../common/endpoint/schema/common'; -import { body, created, encoding } from './common'; +import { + compressionAlgorithm, + encryptionAlgorithm, + identifier, + sha256, + size, +} from '../../../../common/endpoint/schema/common'; +import { body, created } from './common'; export const internalArtifactSchema = t.exact( t.type({ identifier, - sha256, - encoding, + compressionAlgorithm, + encryptionAlgorithm, + decompressedSha256: sha256, + decompressedSize: size, + compressedSha256: sha256, + compressedSize: size, created, body, - size, }) ); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts index 4a3dcaae1bd3d..00ae802ba6f32 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/artifact_client.ts @@ -16,7 +16,7 @@ export class ArtifactClient { } public getArtifactId(artifact: InternalArtifactSchema) { - return `${artifact.identifier}-${artifact.sha256}`; + return `${artifact.identifier}-${artifact.compressedSha256}`; } public async getArtifact(id: string): Promise> { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts index bbb6fdfd50810..ef4f921cb537e 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.test.ts @@ -38,9 +38,13 @@ describe('manifest_manager', () => { schema_version: '1.0.0', artifacts: { [artifact.identifier]: { - sha256: artifact.sha256, - size: artifact.size, - url: `/api/endpoint/artifacts/download/${artifact.identifier}/${artifact.sha256}`, + compression_algorithm: 'none', + encryption_algorithm: 'none', + precompress_sha256: artifact.decompressedSha256, + postcompress_sha256: artifact.compressedSha256, + precompress_size: artifact.decompressedSize, + postcompress_size: artifact.compressedSize, + relative_url: `/api/endpoint/artifacts/download/${artifact.identifier}/${artifact.compressedSha256}`, }, }, }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts index 33b0d5db575c6..e47a23b893b71 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts @@ -180,17 +180,15 @@ export class ManifestManager { this.logger.info(`Dispatching new manifest with diffs: ${showDiffs(wrappedManifest.diffs)}`); let paging = true; + let page = 1; let success = true; while (paging) { - const { items, total, page } = await this.packageConfigService.list( - this.savedObjectsClient, - { - page: 1, - perPage: 20, - kuery: 'ingest-package-configs.package.name:endpoint', - } - ); + const { items, total } = await this.packageConfigService.list(this.savedObjectsClient, { + page, + perPage: 20, + kuery: 'ingest-package-configs.package.name:endpoint', + }); for (const packageConfig of items) { const { id, revision, updated_at, updated_by, ...newPackageConfig } = packageConfig; @@ -222,6 +220,7 @@ export class ManifestManager { } paging = page * items.length < total; + page++; } return success ? wrappedManifest : null; diff --git a/x-pack/test/functional/es_archives/endpoint/artifacts/api_feature/data.json b/x-pack/test/functional/es_archives/endpoint/artifacts/api_feature/data.json index a886b60e7e0dc..b156f2f6cc7bf 100644 --- a/x-pack/test/functional/es_archives/endpoint/artifacts/api_feature/data.json +++ b/x-pack/test/functional/es_archives/endpoint/artifacts/api_feature/data.json @@ -1,20 +1,23 @@ { "type": "doc", "value": { - "id": "endpoint:exceptions-artifact:endpoint-exceptionlist-linux-1.0.0-a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", + "id": "endpoint:user-artifact:endpoint-exceptionlist-linux-1.0.0-a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", "index": ".kibana", "source": { "references": [ ], - "endpoint:exceptions-artifact": { + "endpoint:user-artifact": { "body": "eyJleGNlcHRpb25zX2xpc3QiOltdfQ==", "created": 1593016187465, - "encoding": "application/json", + "compressionAlgorithm": "none", + "encryptionAlgorithm": "none", "identifier": "endpoint-exceptionlist-linux-1.0.0", - "sha256": "a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", - "size": 22 + "compressedSha256": "a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", + "compressedSize": 22, + "decompressedSha256": "a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", + "decompressedSize": 22 }, - "type": "endpoint:exceptions-artifact", + "type": "endpoint:user-artifact", "updated_at": "2020-06-24T16:29:47.584Z" } } @@ -23,12 +26,12 @@ { "type": "doc", "value": { - "id": "endpoint:exceptions-manifest:endpoint-manifest-1.0.0", + "id": "endpoint:user-artifact-manifest:endpoint-manifest-1.0.0", "index": ".kibana", "source": { "references": [ ], - "endpoint:exceptions-manifest": { + "endpoint:user-artifact-manifest": { "created": 1593183699663, "ids": [ "endpoint-exceptionlist-linux-1.0.0-a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d", @@ -36,7 +39,7 @@ "endpoint-exceptionlist-windows-1.0.0-a4e4586e895fcb46dd25a25358b446f9a425279452afa3ef9a98bca39c39122d" ] }, - "type": "endpoint:exceptions-manifest", + "type": "endpoint:user-artifact-manifest", "updated_at": "2020-06-26T15:01:39.704Z" } } From 86672a7b0764cdcb27a9d5af9e53743c03c3f4be Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sun, 5 Jul 2020 23:00:13 +0100 Subject: [PATCH 42/59] skip flaky suite (#70762) --- .../src/integration_tests/basic_optimization.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index 93a7240849b94..d1b080b76b30e 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -63,7 +63,8 @@ afterAll(async () => { await del(TMP_DIR); }); -it('builds expected bundles, saves bundle counts to metadata', async () => { +// FLAKY: https://github.com/elastic/kibana/issues/70762 +it.skip('builds expected bundles, saves bundle counts to metadata', async () => { const config = OptimizerConfig.create({ repoRoot: MOCK_REPO_DIR, pluginScanDirs: [Path.resolve(MOCK_REPO_DIR, 'plugins')], From c96d9b4ba313f1e2a6aa56b83ce8081db4c92936 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 6 Jul 2020 00:55:02 +0100 Subject: [PATCH 43/59] skip flaky suite (#70764) --- .../src/integration_tests/basic_optimization.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index d1b080b76b30e..abbeb72af784c 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -168,7 +168,8 @@ it.skip('builds expected bundles, saves bundle counts to metadata', async () => `); }); -it('uses cache on second run and exist cleanly', async () => { +// FLAKY: https://github.com/elastic/kibana/issues/70764 +it.skip('uses cache on second run and exist cleanly', async () => { const config = OptimizerConfig.create({ repoRoot: MOCK_REPO_DIR, pluginScanDirs: [Path.resolve(MOCK_REPO_DIR, 'plugins')], From 564e91fdecedbe47d59ab0f6be1e87ba332b5ed4 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 6 Jul 2020 07:41:32 +0100 Subject: [PATCH 44/59] [APM-UI] e2e speed up build (#70704) --- .ci/end2end.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/end2end.groovy b/.ci/end2end.groovy index ed642f22cfeb4..97099c6f87448 100644 --- a/.ci/end2end.groovy +++ b/.ci/end2end.groovy @@ -14,6 +14,7 @@ pipeline { HOME = "${env.WORKSPACE}" E2E_DIR = 'x-pack/plugins/apm/e2e' PIPELINE_LOG_LEVEL = 'DEBUG' + KBN_OPTIMIZER_THEMES = 'v7light' } options { timeout(time: 1, unit: 'HOURS') From 2a43b48ac77d832134d8f6dcc8ae5f391170fd98 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Mon, 6 Jul 2020 10:50:04 +0200 Subject: [PATCH 45/59] remove snapshot from disabled test suite. (#70769) --- .../basic_optimization.test.ts.snap | 66 ------------------- 1 file changed, 66 deletions(-) diff --git a/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap b/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap index 211cfac3806ad..1466865df8d98 100644 --- a/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap +++ b/packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap @@ -1,71 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`builds expected bundles, saves bundle counts to metadata: OptimizerConfig 1`] = ` -OptimizerConfig { - "bundles": Array [ - Bundle { - "cache": BundleCache { - "path": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar/target/public/.kbn-optimizer-cache, - "state": undefined, - }, - "contextDir": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar, - "id": "bar", - "outputDir": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar/target/public, - "publicDirNames": Array [ - "public", - ], - "sourceRoot": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo, - "type": "plugin", - }, - Bundle { - "cache": BundleCache { - "path": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo/target/public/.kbn-optimizer-cache, - "state": undefined, - }, - "contextDir": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo, - "id": "foo", - "outputDir": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo/target/public, - "publicDirNames": Array [ - "public", - ], - "sourceRoot": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo, - "type": "plugin", - }, - ], - "cache": true, - "dist": false, - "inspectWorkers": false, - "maxWorkerCount": 1, - "plugins": Array [ - Object { - "directory": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/bar, - "extraPublicDirs": Array [], - "id": "bar", - "isUiPlugin": true, - }, - Object { - "directory": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/foo, - "extraPublicDirs": Array [], - "id": "foo", - "isUiPlugin": true, - }, - Object { - "directory": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo/plugins/nested/baz, - "extraPublicDirs": Array [], - "id": "baz", - "isUiPlugin": false, - }, - ], - "profileWebpack": false, - "repoRoot": /packages/kbn-optimizer/src/__fixtures__/__tmp__/mock_repo, - "themeTags": Array [ - "v7dark", - "v7light", - ], - "watch": false, -} -`; - exports[`prepares assets for distribution: bar bundle 1`] = `"(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!==\\"undefined\\"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:\\"Module\\"})}Object.defineProperty(exports,\\"__esModule\\",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value===\\"object\\"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,\\"default\\",{enumerable:true,value:value});if(mode&2&&typeof value!=\\"string\\")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module[\\"default\\"]}:function getModuleExports(){return module};__webpack_require__.d(getter,\\"a\\",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p=\\"\\";return __webpack_require__(__webpack_require__.s=5)})([function(module,exports,__webpack_require__){\\"use strict\\";var isOldIE=function isOldIE(){var memo;return function memorize(){if(typeof memo===\\"undefined\\"){memo=Boolean(window&&document&&document.all&&!window.atob)}return memo}}();var getTarget=function getTarget(){var memo={};return function memorize(target){if(typeof memo[target]===\\"undefined\\"){var styleTarget=document.querySelector(target);if(window.HTMLIFrameElement&&styleTarget instanceof window.HTMLIFrameElement){try{styleTarget=styleTarget.contentDocument.head}catch(e){styleTarget=null}}memo[target]=styleTarget}return memo[target]}}();var stylesInDom=[];function getIndexByIdentifier(identifier){var result=-1;for(var i=0;i Date: Mon, 6 Jul 2020 13:04:43 +0200 Subject: [PATCH 46/59] [GS] add savedObjects result provider (#68619) * create server-side skeleton * add base implementation & tests * add unit test for provider * remove useless contracts * add preference search option * implement score from find results * fix types * add FTR test * fix test plugin types * address ome review comments * add multi results test * use `getVisibleTypes` --- x-pack/plugins/global_search/server/mocks.ts | 8 +- .../server/services/context.mock.ts | 38 ++ .../global_search_providers/kibana.json | 2 +- .../global_search_providers/server/index.ts | 11 + .../server/plugin.test.ts | 33 ++ .../global_search_providers/server/plugin.ts | 28 + .../server/providers/index.ts | 7 + .../server/providers/saved_objects/index.ts | 7 + .../map_object_to_result.test.ts | 208 +++++++ .../saved_objects/map_object_to_result.ts | 38 ++ .../providers/saved_objects/provider.test.ts | 166 ++++++ .../providers/saved_objects/provider.ts | 42 ++ .../es_archives/global_search/basic/data.json | 193 +++++++ .../global_search/basic/mappings.json | 516 ++++++++++++++++++ .../global_search_test/public/plugin.ts | 15 +- .../global_search/global_search_api.ts | 2 +- .../global_search/global_search_providers.ts | 74 +++ .../test_suites/global_search/index.ts | 1 + 18 files changed, 1382 insertions(+), 7 deletions(-) create mode 100644 x-pack/plugins/global_search/server/services/context.mock.ts create mode 100644 x-pack/plugins/global_search_providers/server/index.ts create mode 100644 x-pack/plugins/global_search_providers/server/plugin.test.ts create mode 100644 x-pack/plugins/global_search_providers/server/plugin.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/index.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/saved_objects/index.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts create mode 100644 x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts create mode 100644 x-pack/test/plugin_functional/es_archives/global_search/basic/data.json create mode 100644 x-pack/test/plugin_functional/es_archives/global_search/basic/mappings.json create mode 100644 x-pack/test/plugin_functional/test_suites/global_search/global_search_providers.ts diff --git a/x-pack/plugins/global_search/server/mocks.ts b/x-pack/plugins/global_search/server/mocks.ts index 8a189a5701708..e7c133edf95c8 100644 --- a/x-pack/plugins/global_search/server/mocks.ts +++ b/x-pack/plugins/global_search/server/mocks.ts @@ -11,6 +11,7 @@ import { RouteHandlerGlobalSearchContext, } from './types'; import { searchServiceMock } from './services/search_service.mock'; +import { contextMock } from './services/context.mock'; const createSetupMock = (): jest.Mocked => { const searchMock = searchServiceMock.createSetupContract(); @@ -29,17 +30,18 @@ const createStartMock = (): jest.Mocked => { }; const createRouteHandlerContextMock = (): jest.Mocked => { - const contextMock = { + const handlerContextMock = { find: jest.fn(), }; - contextMock.find.mockReturnValue(of([])); + handlerContextMock.find.mockReturnValue(of([])); - return contextMock; + return handlerContextMock; }; export const globalSearchPluginMock = { createSetupContract: createSetupMock, createStartContract: createStartMock, createRouteHandlerContext: createRouteHandlerContextMock, + createProviderContext: contextMock.create, }; diff --git a/x-pack/plugins/global_search/server/services/context.mock.ts b/x-pack/plugins/global_search/server/services/context.mock.ts new file mode 100644 index 0000000000000..50c6da109f8dd --- /dev/null +++ b/x-pack/plugins/global_search/server/services/context.mock.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + savedObjectsTypeRegistryMock, + savedObjectsClientMock, + elasticsearchServiceMock, + uiSettingsServiceMock, +} from '../../../../../src/core/server/mocks'; + +const createContextMock = () => { + return { + core: { + savedObjects: { + client: savedObjectsClientMock.create(), + typeRegistry: savedObjectsTypeRegistryMock.create(), + }, + elasticsearch: { + legacy: { + client: elasticsearchServiceMock.createScopedClusterClient(), + }, + }, + uiSettings: { + client: uiSettingsServiceMock.createClient(), + }, + }, + }; +}; + +const createFactoryMock = () => () => () => createContextMock(); + +export const contextMock = { + create: createContextMock, + createFactory: createFactoryMock, +}; diff --git a/x-pack/plugins/global_search_providers/kibana.json b/x-pack/plugins/global_search_providers/kibana.json index 025ea2bceed2c..39eca87d0bf89 100644 --- a/x-pack/plugins/global_search_providers/kibana.json +++ b/x-pack/plugins/global_search_providers/kibana.json @@ -2,7 +2,7 @@ "id": "globalSearchProviders", "version": "8.0.0", "kibanaVersion": "kibana", - "server": false, + "server": true, "ui": true, "requiredPlugins": ["globalSearch"], "optionalPlugins": [], diff --git a/x-pack/plugins/global_search_providers/server/index.ts b/x-pack/plugins/global_search_providers/server/index.ts new file mode 100644 index 0000000000000..26e4142d4865a --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { PluginInitializer } from 'src/core/server'; +import { GlobalSearchProvidersPlugin, GlobalSearchProvidersPluginSetupDeps } from './plugin'; + +export const plugin: PluginInitializer<{}, {}, GlobalSearchProvidersPluginSetupDeps, {}> = () => + new GlobalSearchProvidersPlugin(); diff --git a/x-pack/plugins/global_search_providers/server/plugin.test.ts b/x-pack/plugins/global_search_providers/server/plugin.test.ts new file mode 100644 index 0000000000000..c9b51619d1789 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/plugin.test.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { coreMock } from '../../../../src/core/server/mocks'; +import { globalSearchPluginMock } from '../../global_search/server/mocks'; +import { GlobalSearchProvidersPlugin } from './plugin'; + +describe('GlobalSearchProvidersPlugin', () => { + let plugin: GlobalSearchProvidersPlugin; + let globalSearchSetup: ReturnType; + + beforeEach(() => { + plugin = new GlobalSearchProvidersPlugin(); + globalSearchSetup = globalSearchPluginMock.createSetupContract(); + }); + + describe('#setup', () => { + it('registers the `savedObjects` result provider', () => { + const coreSetup = coreMock.createSetup(); + plugin.setup(coreSetup, { globalSearch: globalSearchSetup }); + + expect(globalSearchSetup.registerResultProvider).toHaveBeenCalledTimes(1); + expect(globalSearchSetup.registerResultProvider).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'savedObjects', + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/global_search_providers/server/plugin.ts b/x-pack/plugins/global_search_providers/server/plugin.ts new file mode 100644 index 0000000000000..64e7802937d80 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/plugin.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { CoreSetup, Plugin } from 'src/core/server'; +import { GlobalSearchPluginSetup } from '../../global_search/server'; +import { createSavedObjectsResultProvider } from './providers'; + +export interface GlobalSearchProvidersPluginSetupDeps { + globalSearch: GlobalSearchPluginSetup; +} + +export class GlobalSearchProvidersPlugin + implements Plugin<{}, {}, GlobalSearchProvidersPluginSetupDeps, {}> { + setup( + { getStartServices }: CoreSetup<{}, {}>, + { globalSearch }: GlobalSearchProvidersPluginSetupDeps + ) { + globalSearch.registerResultProvider(createSavedObjectsResultProvider()); + return {}; + } + + start() { + return {}; + } +} diff --git a/x-pack/plugins/global_search_providers/server/providers/index.ts b/x-pack/plugins/global_search_providers/server/providers/index.ts new file mode 100644 index 0000000000000..1670871f305d9 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { createSavedObjectsResultProvider } from './saved_objects'; diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/index.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/index.ts new file mode 100644 index 0000000000000..4a67fd8b3df18 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { createSavedObjectsResultProvider } from './provider'; diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts new file mode 100644 index 0000000000000..0085331c5be5f --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts @@ -0,0 +1,208 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsFindResult, SavedObjectsType, SavedObjectTypeRegistry } from 'src/core/server'; +import { mapToResult, mapToResults } from './map_object_to_result'; + +const createType = (props: Partial): SavedObjectsType => { + return { + name: 'type', + hidden: false, + namespaceType: 'single', + mappings: { properties: {} }, + ...props, + }; +}; + +const createObject = ( + props: Partial, + attributes: T +): SavedObjectsFindResult => { + return { + id: 'id', + type: 'dashboard', + references: [], + score: 100, + ...props, + attributes, + }; +}; + +describe('mapToResult', () => { + it('converts a savedObject to a result', () => { + const type = createType({ + name: 'dashboard', + management: { + defaultSearchField: 'title', + getInAppUrl: (obj) => ({ path: `/dashboard/${obj.id}`, uiCapabilitiesPath: '' }), + }, + }); + + const obj = createObject( + { + id: 'dash1', + type: 'dashboard', + score: 42, + }, + { + title: 'My dashboard', + } + ); + + expect(mapToResult(obj, type)).toEqual({ + id: 'dash1', + title: 'My dashboard', + type: 'dashboard', + url: '/dashboard/dash1', + score: 42, + }); + }); + + it('throws if the type do not have management information', () => { + const object = createObject( + { id: 'dash1', type: 'dashboard', score: 42 }, + { title: 'My dashboard' } + ); + + expect(() => { + mapToResult( + object, + createType({ + name: 'dashboard', + management: { + getInAppUrl: (obj) => ({ path: `/dashboard/${obj.id}`, uiCapabilitiesPath: '' }), + }, + }) + ); + }).toThrowErrorMatchingInlineSnapshot( + `"Trying to map an object from a type without management metadata"` + ); + + expect(() => { + mapToResult( + object, + createType({ + name: 'dashboard', + management: { + defaultSearchField: 'title', + }, + }) + ); + }).toThrowErrorMatchingInlineSnapshot( + `"Trying to map an object from a type without management metadata"` + ); + + expect(() => { + mapToResult( + object, + createType({ + name: 'dashboard', + management: undefined, + }) + ); + }).toThrowErrorMatchingInlineSnapshot( + `"Trying to map an object from a type without management metadata"` + ); + }); +}); + +describe('mapToResults', () => { + let typeRegistry: SavedObjectTypeRegistry; + + beforeEach(() => { + typeRegistry = new SavedObjectTypeRegistry(); + }); + + it('converts savedObjects to results', () => { + typeRegistry.registerType( + createType({ + name: 'typeA', + management: { + defaultSearchField: 'title', + getInAppUrl: (obj) => ({ path: `/type-a/${obj.id}`, uiCapabilitiesPath: '' }), + }, + }) + ); + typeRegistry.registerType( + createType({ + name: 'typeB', + management: { + defaultSearchField: 'description', + getInAppUrl: (obj) => ({ path: `/type-b/${obj.id}`, uiCapabilitiesPath: 'foo' }), + }, + }) + ); + typeRegistry.registerType( + createType({ + name: 'typeC', + management: { + defaultSearchField: 'excerpt', + getInAppUrl: (obj) => ({ path: `/type-c/${obj.id}`, uiCapabilitiesPath: 'bar' }), + }, + }) + ); + + const results = [ + createObject( + { + id: 'resultA', + type: 'typeA', + score: 100, + }, + { + title: 'titleA', + field: 'noise', + } + ), + createObject( + { + id: 'resultC', + type: 'typeC', + score: 42, + }, + { + excerpt: 'titleC', + title: 'foo', + } + ), + createObject( + { + id: 'resultB', + type: 'typeB', + score: 69, + }, + { + description: 'titleB', + bar: 'baz', + } + ), + ]; + + expect(mapToResults(results, typeRegistry)).toEqual([ + { + id: 'resultA', + title: 'titleA', + type: 'typeA', + url: '/type-a/resultA', + score: 100, + }, + { + id: 'resultC', + title: 'titleC', + type: 'typeC', + url: '/type-c/resultC', + score: 42, + }, + { + id: 'resultB', + title: 'titleB', + type: 'typeB', + url: '/type-b/resultB', + score: 69, + }, + ]); + }); +}); diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts new file mode 100644 index 0000000000000..c93558b1a3cf4 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + SavedObjectsType, + ISavedObjectTypeRegistry, + SavedObjectsFindResult, +} from 'src/core/server'; +import { GlobalSearchProviderResult } from '../../../../global_search/server'; + +export const mapToResults = ( + objects: Array>, + registry: ISavedObjectTypeRegistry +): GlobalSearchProviderResult[] => { + return objects.map((obj) => mapToResult(obj, registry.getType(obj.type)!)); +}; + +export const mapToResult = ( + object: SavedObjectsFindResult, + type: SavedObjectsType +): GlobalSearchProviderResult => { + const { defaultSearchField, getInAppUrl } = type.management ?? {}; + if (defaultSearchField === undefined || getInAppUrl === undefined) { + throw new Error('Trying to map an object from a type without management metadata'); + } + return { + id: object.id, + // defaultSearchField is dynamic and not 'directly' bound to the generic type of the SavedObject + // so we are forced to cast the attributes to any to access the properties associated with it. + title: (object.attributes as any)[defaultSearchField], + type: object.type, + url: getInAppUrl(object).path, + score: object.score, + }; +}; diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts new file mode 100644 index 0000000000000..84e05c67c5f66 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts @@ -0,0 +1,166 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EMPTY } from 'rxjs'; +import { TestScheduler } from 'rxjs/testing'; +import { + SavedObjectsFindResponse, + SavedObjectsFindResult, + SavedObjectsType, + SavedObjectTypeRegistry, +} from 'src/core/server'; +import { globalSearchPluginMock } from '../../../../global_search/server/mocks'; +import { + GlobalSearchResultProvider, + GlobalSearchProviderFindOptions, +} from '../../../../global_search/server'; +import { createSavedObjectsResultProvider } from './provider'; + +const getTestScheduler = () => + new TestScheduler((actual, expected) => { + expect(actual).toEqual(expected); + }); + +const createFindResponse = ( + results: SavedObjectsFindResult[] +): SavedObjectsFindResponse => ({ + saved_objects: results, + page: 1, + per_page: 20, + total: results.length, +}); + +const createType = (props: Partial): SavedObjectsType => { + return { + name: 'type', + hidden: false, + namespaceType: 'single', + mappings: { properties: {} }, + ...props, + management: { + defaultSearchField: 'field', + getInAppUrl: (obj) => ({ path: `/object/${obj.id}`, uiCapabilitiesPath: '' }), + ...props.management, + }, + }; +}; + +const createObject = ( + props: Partial, + attributes: T +): SavedObjectsFindResult => { + return { + id: 'id', + type: 'dashboard', + score: 100, + references: [], + ...props, + attributes, + }; +}; + +const defaultOption: GlobalSearchProviderFindOptions = { + preference: 'pref', + maxResults: 20, + aborted$: EMPTY, +}; + +describe('savedObjectsResultProvider', () => { + let provider: GlobalSearchResultProvider; + let registry: SavedObjectTypeRegistry; + let context: ReturnType; + + beforeEach(() => { + provider = createSavedObjectsResultProvider(); + registry = new SavedObjectTypeRegistry(); + + registry.registerType( + createType({ + name: 'typeA', + management: { + defaultSearchField: 'title', + getInAppUrl: (obj) => ({ path: `/type-a/${obj.id}`, uiCapabilitiesPath: '' }), + }, + }) + ); + registry.registerType( + createType({ + name: 'typeB', + management: { + defaultSearchField: 'description', + getInAppUrl: (obj) => ({ path: `/type-b/${obj.id}`, uiCapabilitiesPath: 'foo' }), + }, + }) + ); + + context = globalSearchPluginMock.createProviderContext(); + context.core.savedObjects.client.find.mockResolvedValue(createFindResponse([])); + context.core.savedObjects.typeRegistry = registry as any; + }); + + it('has the correct id', () => { + expect(provider.id).toBe('savedObjects'); + }); + + it('calls `savedObjectClient.find` with the correct parameters', () => { + provider.find('term', defaultOption, context); + + expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); + expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ + page: 1, + perPage: defaultOption.maxResults, + search: 'term', + preference: 'pref', + searchFields: ['title', 'description'], + type: ['typeA', 'typeB'], + }); + }); + + it('converts the saved objects to results', async () => { + context.core.savedObjects.client.find.mockResolvedValue( + createFindResponse([ + createObject({ id: 'resultA', type: 'typeA', score: 50 }, { title: 'titleA' }), + createObject({ id: 'resultB', type: 'typeB', score: 78 }, { description: 'titleB' }), + ]) + ); + + const results = await provider.find('term', defaultOption, context).toPromise(); + expect(results).toEqual([ + { + id: 'resultA', + title: 'titleA', + type: 'typeA', + url: '/type-a/resultA', + score: 50, + }, + { + id: 'resultB', + title: 'titleB', + type: 'typeB', + url: '/type-b/resultB', + score: 78, + }, + ]); + }); + + it('only emits results until `aborted$` emits', () => { + getTestScheduler().run(({ hot, expectObservable }) => { + // test scheduler doesnt play well with promises. need to workaround by passing + // an observable instead. Behavior with promise is asserted in previous tests of the suite + context.core.savedObjects.client.find.mockReturnValue( + hot('---a', { a: createFindResponse([]) }) as any + ); + + const resultObs = provider.find( + 'term', + { ...defaultOption, aborted$: hot('-(a|)', { a: undefined }) }, + context + ); + + expectObservable(resultObs).toBe('-|'); + }); + }); +}); diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts new file mode 100644 index 0000000000000..b423b19ebc672 --- /dev/null +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { from } from 'rxjs'; +import { map, takeUntil } from 'rxjs/operators'; +import { GlobalSearchResultProvider } from '../../../../global_search/server'; +import { mapToResults } from './map_object_to_result'; + +export const createSavedObjectsResultProvider = (): GlobalSearchResultProvider => { + return { + id: 'savedObjects', + find: (term, { aborted$, maxResults, preference }, { core }) => { + const { typeRegistry, client } = core.savedObjects; + + const searchableTypes = typeRegistry + .getVisibleTypes() + .filter((type) => type.management?.defaultSearchField && type.management?.getInAppUrl); + const searchFields = uniq( + searchableTypes.map((type) => type.management!.defaultSearchField!) + ); + + const responsePromise = client.find({ + page: 1, + perPage: maxResults, + search: term, + preference, + searchFields, + type: searchableTypes.map((type) => type.name), + }); + + return from(responsePromise).pipe( + takeUntil(aborted$), + map((res) => mapToResults(res.saved_objects, typeRegistry)) + ); + }, + }; +}; + +const uniq = (values: T[]): T[] => [...new Set(values)]; diff --git a/x-pack/test/plugin_functional/es_archives/global_search/basic/data.json b/x-pack/test/plugin_functional/es_archives/global_search/basic/data.json new file mode 100644 index 0000000000000..f121f6859885b --- /dev/null +++ b/x-pack/test/plugin_functional/es_archives/global_search/basic/data.json @@ -0,0 +1,193 @@ +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "index-pattern:logstash-*", + "source": { + "index-pattern": { + "title": "logstash-*", + "timeFieldName": "@timestamp", + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"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\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]" + }, + "type": "index-pattern", + "migrationVersion": { + "index-pattern": "6.5.0" + }, + "updated_at": "2018-12-21T00:43:07.096Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "visualization:75c3e060-1e7c-11e9-8488-65449e65d0ed", + "source": { + "visualization": { + "title": "A Pie", + "visState": "{\"title\":\"A Pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}", + "uiStateJSON": "{}", + "description": "", + "version": 1, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" + } + }, + "type": "visualization", + "updated_at": "2019-01-22T19:32:31.206Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "dashboard:i-exist", + "source": { + "dashboard": { + "title": "Amazing Dashboard", + "hits": 0, + "description": "", + "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.0.0\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"id\":\"75c3e060-1e7c-11e9-8488-65449e65d0ed\",\"embeddableConfig\":{}}]", + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "version": 1, + "timeRestore": false, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" + } + }, + "type": "dashboard", + "updated_at": "2019-01-22T19:32:47.232Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "config:6.0.0", + "source": { + "config": { + "buildNum": 9007199254740991, + "defaultIndex": "logstash-*" + }, + "type": "config", + "updated_at": "2019-01-22T19:32:02.235Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "map:0b849ed0-70f5-11e9-8625-9580c4904684", + "source": { + "map": { + "title" : "just a map", + "description" : "", + "mapStateJSON" : "{\"zoom\":0.8,\"center\":{\"lon\":0,\"lat\":0},\"timeFilters\":{\"from\":\"now-15m\",\"to\":\"now\"},\"refreshConfig\":{\"isPaused\":false,\"interval\":0},\"query\":{\"query\":\"\",\"language\":\"kuery\"}}", + "layerListJSON" : "[{\"sourceDescriptor\":{\"type\":\"EMS_TMS\",\"id\":\"road_map\"},\"id\":\"c7bdee60-5267-459e-83d6-b53acf1b9e67\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":1,\"visible\":true,\"applyGlobalQuery\":true,\"style\":{\"type\":\"TILE\",\"properties\":{}},\"type\":\"TILE\"}]", + "uiStateJSON" : "{\"isLayerTOCOpen\":true}", + "bounds" : { + "type" : "polygon", + "coordinates" : [ + [ + [ + -180, + 85.05113 + ], + [ + -180, + -85.05113 + ], + [ + 180, + -85.05113 + ], + [ + 180, + 85.05113 + ], + [ + -180, + 85.05113 + ] + ] + ] + } + }, + "type": "map", + "references" : [ ], + "migrationVersion" : { + "map" : "7.1.0" + }, + "updated_at" : "2019-05-07T18:22:17.405Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "dashboard:1c1a87f0-70f5-11e9-8625-9580c4904684", + "source": { + "dashboard": { + "title" : "dashboard with map", + "hits" : 0, + "description" : "", + "panelsJSON" : "[{\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"version\":\"8.0.0\",\"panelIndex\":\"1\",\"embeddableConfig\":{\"mapCenter\":{\"lat\":0,\"lon\":0,\"zoom\":0.8},\"isLayerTOCOpen\":true},\"panelRefName\":\"panel_0\"}]", + "optionsJSON" : "{\"useMargins\":true,\"hidePanelTitles\":false}", + "version" : 1, + "timeRestore" : false, + "kibanaSavedObjectMeta" : { + "searchSourceJSON" : "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + } + }, + "type": "dashboard", + "references" : [ + { + "name" : "panel_0", + "type" : "map", + "id" : "0b849ed0-70f5-11e9-8625-9580c4904684" + } + ], + "migrationVersion" : { + "dashboard" : "7.0.0" + }, + "updated_at" : "2019-05-07T18:22:45.231Z" + } + } +} + +{ + "type": "doc", + "value": { + "index": ".kibana", + "type": "doc", + "id": "query:okjpgs", + "source": { + "query": { + "title": "OKJpgs", + "description": "Ok responses for jpg files", + "query": { + "query": "response:200", + "language": "kuery" + }, + "filters": [{"meta":{"index":"b15b1d40-a8bb-11e9-98cf-2bb06ef63e0b","alias":null,"negate":false,"type":"phrase","key":"extension.raw","value":"jpg","params":{"query":"jpg"},"disabled":false},"query":{"match":{"extension.raw":{"query":"jpg","type":"phrase"}}},"$state":{"store":"appState"}}] + }, + "type": "query", + "updated_at": "2019-07-17T17:54:26.378Z" + } + } +} diff --git a/x-pack/test/plugin_functional/es_archives/global_search/basic/mappings.json b/x-pack/test/plugin_functional/es_archives/global_search/basic/mappings.json new file mode 100644 index 0000000000000..ebb5b19387faf --- /dev/null +++ b/x-pack/test/plugin_functional/es_archives/global_search/basic/mappings.json @@ -0,0 +1,516 @@ +{ + "type": "index", + "value": { + "index": ".kibana", + "settings": { + "index": { + "number_of_shards": "1", + "auto_expand_replicas": "0-1", + "number_of_replicas": "0" + } + }, + "mappings": { + "dynamic": "strict", + "properties": { + "apm-telemetry": { + "properties": { + "has_any_services": { + "type": "boolean" + }, + "services_per_agent": { + "properties": { + "go": { + "type": "long", + "null_value": 0 + }, + "java": { + "type": "long", + "null_value": 0 + }, + "js-base": { + "type": "long", + "null_value": 0 + }, + "nodejs": { + "type": "long", + "null_value": 0 + }, + "python": { + "type": "long", + "null_value": 0 + }, + "ruby": { + "type": "long", + "null_value": 0 + } + } + } + } + }, + "canvas-workpad": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "id": { + "type": "text", + "index": false + }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + } + } + }, + "config": { + "dynamic": "true", + "properties": { + "accessibility:disableAnimations": { + "type": "boolean" + }, + "buildNum": { + "type": "keyword" + }, + "dateFormat:tz": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "defaultIndex": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "telemetry:optIn": { + "type": "boolean" + } + } + }, + "dashboard": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "optionsJSON": { + "type": "text" + }, + "panelsJSON": { + "type": "text" + }, + "refreshInterval": { + "properties": { + "display": { + "type": "keyword" + }, + "pause": { + "type": "boolean" + }, + "section": { + "type": "integer" + }, + "value": { + "type": "integer" + } + } + }, + "timeFrom": { + "type": "keyword" + }, + "timeRestore": { + "type": "boolean" + }, + "timeTo": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "map" : { + "properties" : { + "bounds" : { + "type" : "geo_shape", + "tree" : "quadtree" + }, + "description" : { + "type" : "text" + }, + "layerListJSON" : { + "type" : "text" + }, + "mapStateJSON" : { + "type" : "text" + }, + "title" : { + "type" : "text" + }, + "uiStateJSON" : { + "type" : "text" + }, + "version" : { + "type" : "integer" + } + } + }, + "graph-workspace": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "numLinks": { + "type": "integer" + }, + "numVertices": { + "type": "integer" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "wsState": { + "type": "text" + } + } + }, + "index-pattern": { + "properties": { + "fieldFormatMap": { + "type": "text" + }, + "fields": { + "type": "text" + }, + "intervalName": { + "type": "keyword" + }, + "notExpandable": { + "type": "boolean" + }, + "sourceFilters": { + "type": "text" + }, + "timeFieldName": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "type": { + "type": "keyword" + }, + "typeMeta": { + "type": "keyword" + } + } + }, + "kql-telemetry": { + "properties": { + "optInCount": { + "type": "long" + }, + "optOutCount": { + "type": "long" + } + } + }, + "migrationVersion": { + "dynamic": "true", + "properties": { + "index-pattern": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "space": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "migrationVersion": { + "dynamic": "true", + "properties": { + "index-pattern": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "namespace": { + "type": "keyword" + }, + "references": { + "type": "nested", + "properties": { + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "id": { + "type": "keyword" + } + } + }, + "search": { + "properties": { + "columns": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "sort": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "server": { + "properties": { + "uuid": { + "type": "keyword" + } + } + }, + "space": { + "properties": { + "_reserved": { + "type": "boolean" + }, + "color": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "disabledFeatures": { + "type": "keyword" + }, + "initials": { + "type": "keyword" + }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 2048 + } + } + } + } + }, + "spaceId": { + "type": "keyword" + }, + "telemetry": { + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "timelion-sheet": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "timelion_chart_height": { + "type": "integer" + }, + "timelion_columns": { + "type": "integer" + }, + "timelion_interval": { + "type": "keyword" + }, + "timelion_other_interval": { + "type": "keyword" + }, + "timelion_rows": { + "type": "integer" + }, + "timelion_sheet": { + "type": "text" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "url": { + "properties": { + "accessCount": { + "type": "long" + }, + "accessDate": { + "type": "date" + }, + "createDate": { + "type": "date" + }, + "url": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 2048 + } + } + } + } + }, + "visualization": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "savedSearchId": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "visState": { + "type": "text" + } + } + }, + "query": { + "properties": { + "title": { + "type": "text" + }, + "description": { + "type": "text" + }, + "query": { + "properties": { + "language": { + "type": "keyword" + }, + "query": { + "type": "keyword", + "index": false + } + } + }, + "filters": { + "type": "object", + "enabled": false + }, + "timefilter": { + "type": "object", + "enabled": false + } + } + } + } + } + } +} diff --git a/x-pack/test/plugin_functional/plugins/global_search_test/public/plugin.ts b/x-pack/test/plugin_functional/plugins/global_search_test/public/plugin.ts index 27434202d77f1..aba3512788f9c 100644 --- a/x-pack/test/plugin_functional/plugins/global_search_test/public/plugin.ts +++ b/x-pack/test/plugin_functional/plugins/global_search_test/public/plugin.ts @@ -17,7 +17,8 @@ import { createResult } from '../common/utils'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface GlobalSearchTestPluginSetup {} export interface GlobalSearchTestPluginStart { - findAll: (term: string) => Promise; + findTest: (term: string) => Promise; + findReal: (term: string) => Promise; } export interface GlobalSearchTestPluginSetupDeps { @@ -74,7 +75,7 @@ export class GlobalSearchTestPlugin { globalSearch }: GlobalSearchTestPluginStartDeps ): GlobalSearchTestPluginStart { return { - findAll: (term) => + findTest: (term) => globalSearch .find(term, {}) .pipe( @@ -84,6 +85,16 @@ export class GlobalSearchTestPlugin reduce((memo, results) => [...memo, ...results]) ) .toPromise(), + findReal: (term) => + globalSearch + .find(term, {}) + .pipe( + map((batch) => batch.results), + // remove test types + map((results) => results.filter((r) => !r.type.startsWith('test_'))), + reduce((memo, results) => [...memo, ...results]) + ) + .toPromise(), }; } } diff --git a/x-pack/test/plugin_functional/test_suites/global_search/global_search_api.ts b/x-pack/test/plugin_functional/test_suites/global_search/global_search_api.ts index ee1745436b735..841c4d2967e21 100644 --- a/x-pack/test/plugin_functional/test_suites/global_search/global_search_api.ts +++ b/x-pack/test/plugin_functional/test_suites/global_search/global_search_api.ts @@ -17,7 +17,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { return browser.executeAsync(async (term, cb) => { const { start } = window.__coreProvider; const globalSearchTestApi: GlobalSearchTestApi = start.plugins.globalSearchTest; - globalSearchTestApi.findAll(term).then(cb); + globalSearchTestApi.findTest(term).then(cb); }, t); }; diff --git a/x-pack/test/plugin_functional/test_suites/global_search/global_search_providers.ts b/x-pack/test/plugin_functional/test_suites/global_search/global_search_providers.ts new file mode 100644 index 0000000000000..4e4f42578d11a --- /dev/null +++ b/x-pack/test/plugin_functional/test_suites/global_search/global_search_providers.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { GlobalSearchResult } from '../../../../plugins/global_search/common/types'; +import { GlobalSearchTestApi } from '../../plugins/global_search_test/public/types'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const pageObjects = getPageObjects(['common']); + const browser = getService('browser'); + const esArchiver = getService('esArchiver'); + + const findResultsWithAPI = async (t: string): Promise => { + return browser.executeAsync(async (term, cb) => { + const { start } = window.__coreProvider; + const globalSearchTestApi: GlobalSearchTestApi = start.plugins.globalSearchTest; + globalSearchTestApi.findReal(term).then(cb); + }, t); + }; + + describe('GlobalSearch - SavedObject provider', function () { + before(async () => { + await esArchiver.load('global_search/basic'); + }); + + after(async () => { + await esArchiver.unload('global_search/basic'); + }); + + beforeEach(async () => { + await pageObjects.common.navigateToApp('globalSearchTestApp'); + }); + + it('can search for index patterns', async () => { + const results = await findResultsWithAPI('logstash'); + expect(results.length).to.be(1); + expect(results[0].type).to.be('index-pattern'); + expect(results[0].title).to.be('logstash-*'); + expect(results[0].score).to.be.greaterThan(1); + }); + + it('can search for visualizations', async () => { + const results = await findResultsWithAPI('pie'); + expect(results.length).to.be(1); + expect(results[0].type).to.be('visualization'); + expect(results[0].title).to.be('A Pie'); + }); + + it('can search for maps', async () => { + const results = await findResultsWithAPI('just'); + expect(results.length).to.be(1); + expect(results[0].type).to.be('map'); + expect(results[0].title).to.be('just a map'); + }); + + it('can search for dashboards', async () => { + const results = await findResultsWithAPI('Amazing'); + expect(results.length).to.be(1); + expect(results[0].type).to.be('dashboard'); + expect(results[0].title).to.be('Amazing Dashboard'); + }); + + it('returns all objects matching the search', async () => { + const results = await findResultsWithAPI('dashboard'); + expect(results.length).to.be.greaterThan(2); + expect(results.map((r) => r.title)).to.contain('dashboard with map'); + expect(results.map((r) => r.title)).to.contain('Amazing Dashboard'); + }); + }); +} diff --git a/x-pack/test/plugin_functional/test_suites/global_search/index.ts b/x-pack/test/plugin_functional/test_suites/global_search/index.ts index 1e5a765612f45..d765e87add105 100644 --- a/x-pack/test/plugin_functional/test_suites/global_search/index.ts +++ b/x-pack/test/plugin_functional/test_suites/global_search/index.ts @@ -10,5 +10,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('GlobalSearch API', function () { this.tags('ciGroup7'); loadTestFile(require.resolve('./global_search_api')); + loadTestFile(require.resolve('./global_search_providers')); }); } From cb302689a54ec986f34193cbc221c40fc8c92b1d Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Mon, 6 Jul 2020 13:32:55 +0200 Subject: [PATCH 47/59] Remove IE11 mention from PR template [skip ci] (#70486) * Remove IE11 mention from PR template * Add link to browser matrix Co-authored-by: Elastic Machine --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4cc0c8016f1d0..754043ee0ef77 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,7 +11,7 @@ Delete any items that are not applicable to this PR. - [ ] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios - [ ] This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server) -- [ ] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) +- [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### For maintainers From 226b4e70677c70864703bda5f8413a29a0fb4fd7 Mon Sep 17 00:00:00 2001 From: patrykkopycinski Date: Mon, 6 Jul 2020 13:36:11 +0200 Subject: [PATCH 48/59] =?UTF-8?q?[Security=20Solution]=20Refactor=20Global?= =?UTF-8?q?Time=20to=20useGlobalTime=20hook=20and=20cle=E2=80=A6=20(#69345?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alerts_histogram_panel/index.tsx | 10 +- .../detection_engine_header_page/index.tsx | 2 + .../detection_engine.test.tsx | 5 + .../detection_engine/detection_engine.tsx | 55 ++-- .../rules/details/index.test.tsx | 8 +- .../detection_engine/rules/details/index.tsx | 300 +++++++++--------- .../components/matrix_histogram/index.tsx | 4 +- .../components/matrix_histogram/types.ts | 8 +- .../common/components/page/manage_query.tsx | 6 +- .../public/common/components/top_n/index.tsx | 93 +++--- .../public/common/components/top_n/top_n.tsx | 13 +- .../anomalies_query_tab_body/types.ts | 8 +- .../common/containers/global_time/index.tsx | 98 ------ .../containers/use_global_time/index.test.tsx | 33 ++ .../containers/use_global_time/index.tsx | 54 ++++ .../containers/use_global_time/types.ts | 14 + .../hosts/pages/details/details_tabs.test.tsx | 6 + .../hosts/pages/details/details_tabs.tsx | 7 +- .../public/hosts/pages/details/index.tsx | 7 +- .../public/hosts/pages/details/types.ts | 2 +- .../public/hosts/pages/hosts.test.tsx | 7 - .../public/hosts/pages/hosts.tsx | 14 +- .../public/hosts/pages/index.tsx | 106 +++---- .../public/hosts/pages/navigation/types.ts | 23 +- .../public/hosts/pages/types.ts | 27 +- .../embeddables/embedded_map.test.tsx | 3 +- .../components/embeddables/embedded_map.tsx | 4 +- .../embeddables/embedded_map_helpers.tsx | 9 +- .../network/components/embeddables/types.ts | 11 +- .../network/containers/network_dns/index.tsx | 4 +- .../public/network/pages/index.tsx | 108 +++---- .../network/pages/ip_details/index.test.tsx | 5 + .../public/network/pages/ip_details/index.tsx | 6 +- .../public/network/pages/ip_details/types.ts | 19 +- .../public/network/pages/navigation/types.ts | 2 +- .../public/network/pages/network.tsx | 6 +- .../public/network/pages/types.ts | 12 +- .../components/alerts_by_category/index.tsx | 13 +- .../components/event_counts/index.tsx | 12 +- .../components/events_by_dataset/index.tsx | 13 +- .../components/overview_host/index.tsx | 18 +- .../components/overview_network/index.tsx | 18 +- .../components/signals_by_category/index.tsx | 13 +- .../public/overview/pages/overview.test.tsx | 5 + .../public/overview/pages/overview.tsx | 111 ++++--- 45 files changed, 574 insertions(+), 728 deletions(-) delete mode 100644 x-pack/plugins/security_solution/public/common/containers/global_time/index.tsx create mode 100644 x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx create mode 100644 x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx create mode 100644 x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts diff --git a/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx b/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx index b002700d7eff0..533a9d51a9bcd 100644 --- a/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx +++ b/x-pack/plugins/security_solution/public/alerts/components/alerts_histogram_panel/index.tsx @@ -11,6 +11,7 @@ import styled from 'styled-components'; import { isEmpty } from 'lodash/fp'; import uuid from 'uuid'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { DEFAULT_NUMBER_FORMAT, APP_ID } from '../../../../common/constants'; import { UpdateDateRange } from '../../../common/components/charts/common'; import { LegendItem } from '../../../common/components/charts/draggable_legend_item'; @@ -28,7 +29,7 @@ import { alertsHistogramOptions } from './config'; import { formatAlertsData, getAlertsHistogramQuery, showInitialLoadingSpinner } from './helpers'; import { AlertsHistogram } from './alerts_histogram'; import * as i18n from './translations'; -import { RegisterQuery, AlertsHistogramOption, AlertsAggregation, AlertsTotal } from './types'; +import { AlertsHistogramOption, AlertsAggregation, AlertsTotal } from './types'; import { LinkButton } from '../../../common/components/links'; import { SecurityPageName } from '../../../app/types'; @@ -52,12 +53,11 @@ const ViewAlertsFlexItem = styled(EuiFlexItem)` margin-left: 24px; `; -interface AlertsHistogramPanelProps { +interface AlertsHistogramPanelProps + extends Pick { chartHeight?: number; defaultStackByOption?: AlertsHistogramOption; - deleteQuery?: ({ id }: { id: string }) => void; filters?: Filter[]; - from: number; headerChildren?: React.ReactNode; /** Override all defaults, and only display this field */ onlyField?: string; @@ -65,13 +65,11 @@ interface AlertsHistogramPanelProps { legendPosition?: Position; panelHeight?: number; signalIndexName: string | null; - setQuery: (params: RegisterQuery) => void; showLinkToAlerts?: boolean; showTotalAlertsCount?: boolean; stackByOptions?: AlertsHistogramOption[]; timelineId?: string; title?: string; - to: number; updateDateRange: UpdateDateRange; } diff --git a/x-pack/plugins/security_solution/public/alerts/components/detection_engine_header_page/index.tsx b/x-pack/plugins/security_solution/public/alerts/components/detection_engine_header_page/index.tsx index a3e76557a6ff5..78a18dc336e5b 100644 --- a/x-pack/plugins/security_solution/public/alerts/components/detection_engine_header_page/index.tsx +++ b/x-pack/plugins/security_solution/public/alerts/components/detection_engine_header_page/index.tsx @@ -22,3 +22,5 @@ DetectionEngineHeaderPageComponent.defaultProps = { }; export const DetectionEngineHeaderPage = React.memo(DetectionEngineHeaderPageComponent); + +DetectionEngineHeaderPage.displayName = 'DetectionEngineHeaderPage'; diff --git a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.test.tsx b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.test.tsx index d033bc25e9801..fa7c85c95d87b 100644 --- a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.test.tsx +++ b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.test.tsx @@ -17,6 +17,11 @@ import { useWithSource } from '../../../common/containers/source'; jest.mock('../../components/user_info'); jest.mock('../../../common/containers/source'); jest.mock('../../../common/components/link_to'); +jest.mock('../../../common/containers/use_global_time', () => ({ + useGlobalTime: jest + .fn() + .mockReturnValue({ from: 0, isInitializing: false, to: 0, setQuery: jest.fn() }), +})); jest.mock('react-router-dom', () => { const originalModule = jest.requireActual('react-router-dom'); diff --git a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.tsx b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.tsx index dc0b22c82af3e..5c525a8553477 100644 --- a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.tsx +++ b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/detection_engine.tsx @@ -12,7 +12,7 @@ import { connect, ConnectedProps } from 'react-redux'; import { useHistory } from 'react-router-dom'; import { SecurityPageName } from '../../../app/types'; import { TimelineId } from '../../../../common/types/timeline'; -import { GlobalTime } from '../../../common/containers/global_time'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import { useWithSource } from '../../../common/containers/source'; import { UpdateDateRange } from '../../../common/components/charts/common'; import { FiltersGlobal } from '../../../common/components/filters_global'; @@ -44,6 +44,7 @@ export const DetectionEnginePageComponent: React.FC = ({ query, setAbsoluteRangeDatePicker, }) => { + const { to, from, deleteQuery, setQuery } = useGlobalTime(); const { loading, isSignalIndexExists, @@ -131,36 +132,28 @@ export const DetectionEnginePageComponent: React.FC = ({ - - {({ to, from, deleteQuery, setQuery }) => ( - <> - <> - - - - - - )} - + + + ) : ( diff --git a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.test.tsx b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.test.tsx index 0acb18082379a..11099e8cfc755 100644 --- a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.test.tsx @@ -18,6 +18,12 @@ import { useParams } from 'react-router-dom'; jest.mock('../../../../../common/components/link_to'); jest.mock('../../../../components/user_info'); jest.mock('../../../../../common/containers/source'); +jest.mock('../../../../../common/containers/use_global_time', () => ({ + useGlobalTime: jest + .fn() + .mockReturnValue({ from: 0, isInitializing: false, to: 0, setQuery: jest.fn() }), +})); + jest.mock('react-router-dom', () => { const originalModule = jest.requireActual('react-router-dom'); @@ -50,6 +56,6 @@ describe('RuleDetailsPageComponent', () => { } ); - expect(wrapper.find('GlobalTime')).toHaveLength(1); + expect(wrapper.find('DetectionEngineHeaderPage')).toHaveLength(1); }); }); diff --git a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.tsx b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.tsx index 2ec603546983e..b937e95c0a57e 100644 --- a/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.tsx +++ b/x-pack/plugins/security_solution/public/alerts/pages/detection_engine/rules/details/index.tsx @@ -56,7 +56,7 @@ import { StepPanel } from '../../../../components/rules/step_panel'; import { getStepsData, redirectToDetections, userHasNoPermissions } from '../helpers'; import * as ruleI18n from '../translations'; import * as i18n from './translations'; -import { GlobalTime } from '../../../../../common/containers/global_time'; +import { useGlobalTime } from '../../../../../common/containers/use_global_time'; import { alertsHistogramOptions } from '../../../../components/alerts_histogram_panel/config'; import { inputsSelectors } from '../../../../../common/store/inputs'; import { State } from '../../../../../common/store'; @@ -103,6 +103,7 @@ export const RuleDetailsPageComponent: FC = ({ query, setAbsoluteRangeDatePicker, }) => { + const { to, from, deleteQuery, setQuery } = useGlobalTime(); const { loading, isSignalIndexExists, @@ -263,169 +264,164 @@ export const RuleDetailsPageComponent: FC = ({ {hasIndexWrite != null && !hasIndexWrite && } {userHasNoPermissions(canUserCRUD) && } {indicesExist ? ( - - {({ to, from, deleteQuery, setQuery }) => ( - - - - - - - - {detectionI18n.LAST_ALERT} - {': '} - {lastAlerts} - , - ] - : []), - , - ]} - title={title} - > - + + + + + + + + {detectionI18n.LAST_ALERT} + {': '} + {lastAlerts} + , + ] + : []), + , + ]} + title={title} + > + + + + + + + + + - - - + {ruleI18n.EDIT_RULE_SETTINGS} + - - - - - {ruleI18n.EDIT_RULE_SETTINGS} - - - - - - + - - {ruleError} - - - - + + + + {ruleError} + + + + + + + + + + + {defineRuleData != null && ( + + )} + - - - - - - {defineRuleData != null && ( - - )} - - - - - - {scheduleRuleData != null && ( - - )} - - - + + + + {scheduleRuleData != null && ( + + )} + + + + + {tabs} + + {ruleDetailTab === RuleDetailTabs.alerts && ( + <> + - {tabs} - - {ruleDetailTab === RuleDetailTabs.alerts && ( - <> - - - {ruleId != null && ( - - )} - - )} - {ruleDetailTab === RuleDetailTabs.exceptions && ( - )} - {ruleDetailTab === RuleDetailTabs.failures && } - - - )} - + + )} + {ruleDetailTab === RuleDetailTabs.exceptions && ( + + )} + {ruleDetailTab === RuleDetailTabs.failures && } + + ) : ( diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx index 31f7e1b7fac7c..16fe2a6669ff0 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/index.tsx @@ -31,7 +31,7 @@ import { GetTitle, GetSubTitle, } from '../../components/matrix_histogram/types'; -import { SetQuery } from '../../../hosts/pages/navigation/types'; +import { GlobalTimeArgs } from '../../containers/use_global_time'; import { QueryTemplateProps } from '../../containers/query_template'; import { setAbsoluteRangeDatePicker } from '../../store/inputs/actions'; import { InputsModelId } from '../../store/inputs/constants'; @@ -48,7 +48,7 @@ export interface OwnProps extends QueryTemplateProps { legendPosition?: Position; mapping?: MatrixHistogramMappingTypes; showSpacer?: boolean; - setQuery: SetQuery; + setQuery: GlobalTimeArgs['setQuery']; setAbsoluteRangeDatePickerTarget?: InputsModelId; showLegend?: boolean; stackByOptions: MatrixHistogramOption[]; diff --git a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts index f388409b443db..ff0816758cb0c 100644 --- a/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/matrix_histogram/types.ts @@ -8,10 +8,10 @@ import { EuiTitleSize } from '@elastic/eui'; import { ScaleType, Position, TickFormatter } from '@elastic/charts'; import { ActionCreator } from 'redux'; import { ESQuery } from '../../../../common/typed_json'; -import { SetQuery } from '../../../hosts/pages/navigation/types'; import { InputsModelId } from '../../store/inputs/constants'; import { HistogramType } from '../../../graphql/types'; import { UpdateDateRange } from '../charts/common'; +import { GlobalTimeArgs } from '../../containers/use_global_time'; export type MatrixHistogramMappingTypes = Record< string, @@ -47,15 +47,15 @@ interface MatrixHistogramBasicProps { from: number; to: number; }>; - endDate: number; + endDate: GlobalTimeArgs['to']; headerChildren?: React.ReactNode; hideHistogramIfEmpty?: boolean; id: string; legendPosition?: Position; mapping?: MatrixHistogramMappingTypes; panelHeight?: number; - setQuery: SetQuery; - startDate: number; + setQuery: GlobalTimeArgs['setQuery']; + startDate: GlobalTimeArgs['from']; stackByOptions: MatrixHistogramOption[]; subtitle?: string | GetSubTitle; title?: string | GetTitle; diff --git a/x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx b/x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx index 9e78f704b0f05..02d9a62f2890e 100644 --- a/x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx +++ b/x-pack/plugins/security_solution/public/common/components/page/manage_query.tsx @@ -9,16 +9,14 @@ import { omit } from 'lodash/fp'; import React from 'react'; import { inputsModel } from '../../store'; -import { SetQuery } from '../../../hosts/pages/navigation/types'; +import { GlobalTimeArgs } from '../../containers/use_global_time'; -interface OwnProps { - deleteQuery?: ({ id }: { id: string }) => void; +interface OwnProps extends Pick { headerChildren?: React.ReactNode; id: string; legendPosition?: Position; loading: boolean; refetch: inputsModel.Refetch; - setQuery: SetQuery; inspect?: inputsModel.InspectQuery; } diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx index b453760ebcf09..0b2f1f1e35cc7 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/index.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { connect, ConnectedProps } from 'react-redux'; -import { GlobalTime } from '../../containers/global_time'; +import { useGlobalTime } from '../../containers/use_global_time'; import { BrowserFields } from '../../containers/source'; import { useKibana } from '../../lib/kibana'; import { @@ -104,60 +104,55 @@ const StatefulTopNComponent: React.FC = ({ value, }) => { const kibana = useKibana(); + const { from, deleteQuery, setQuery, to } = useGlobalTime(); const options = getOptions( timelineId === TimelineId.active ? activeTimelineEventType : undefined ); return ( - - {({ from, deleteQuery, setQuery, to }) => ( - - )} - + ); }; diff --git a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx index 7d19bf21271aa..5e2fd998224c6 100644 --- a/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx +++ b/x-pack/plugins/security_solution/public/common/components/top_n/top_n.tsx @@ -9,10 +9,10 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { ActionCreator } from 'typescript-fsa'; +import { GlobalTimeArgs } from '../../containers/use_global_time'; import { EventsByDataset } from '../../../overview/components/events_by_dataset'; import { SignalsByCategory } from '../../../overview/components/signals_by_category'; import { Filter, IIndexPattern, Query } from '../../../../../../../src/plugins/data/public'; -import { inputsModel } from '../../store'; import { InputsModelId } from '../../store/inputs/constants'; import { EventType } from '../../../timelines/store/timeline/model'; @@ -43,13 +43,11 @@ const TopNContent = styled.div` } `; -export interface Props { +export interface Props extends Pick { combinedQueries?: string; defaultView: EventType; - deleteQuery?: ({ id }: { id: string }) => void; field: string; filters: Filter[]; - from: number; indexPattern: IIndexPattern; indexToAdd?: string[] | null; options: TopNOption[]; @@ -60,13 +58,6 @@ export interface Props { to: number; }>; setAbsoluteRangeDatePickerTarget: InputsModelId; - setQuery: (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; - to: number; timelineId?: string; toggleTopN: () => void; onFilterAdded?: () => void; diff --git a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts index a2009809a9916..d716df70246f7 100644 --- a/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts +++ b/x-pack/plugins/security_solution/public/common/containers/anomalies/anomalies_query_tab_body/types.ts @@ -7,7 +7,7 @@ import { ESTermQuery } from '../../../../../common/typed_json'; import { NarrowDateRange } from '../../../components/ml/types'; import { UpdateDateRange } from '../../../components/charts/common'; -import { SetQuery } from '../../../../hosts/pages/navigation/types'; +import { GlobalTimeArgs } from '../../use_global_time'; import { FlowTarget } from '../../../../graphql/types'; import { HostsType } from '../../../../hosts/store/model'; import { NetworkType } from '../../../../network/store//model'; @@ -22,11 +22,11 @@ export type AnomaliesQueryTabBodyProps = QueryTabBodyProps & { // eslint-disable-next-line @typescript-eslint/no-explicit-any AnomaliesTableComponent: React.NamedExoticComponent; deleteQuery?: ({ id }: { id: string }) => void; - endDate: number; + endDate: GlobalTimeArgs['to']; flowTarget?: FlowTarget; narrowDateRange: NarrowDateRange; - setQuery: SetQuery; - startDate: number; + setQuery: GlobalTimeArgs['setQuery']; + startDate: GlobalTimeArgs['from']; skip: boolean; updateDateRange?: UpdateDateRange; hideHistogramIfEmpty?: boolean; diff --git a/x-pack/plugins/security_solution/public/common/containers/global_time/index.tsx b/x-pack/plugins/security_solution/public/common/containers/global_time/index.tsx deleted file mode 100644 index 9c9778c7074ee..0000000000000 --- a/x-pack/plugins/security_solution/public/common/containers/global_time/index.tsx +++ /dev/null @@ -1,98 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { useCallback, useState, useEffect } from 'react'; -import { connect, ConnectedProps } from 'react-redux'; - -import { inputsModel, inputsSelectors, State } from '../../store'; -import { inputsActions } from '../../store/actions'; - -interface SetQuery { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch | inputsModel.RefetchKql; -} - -export interface GlobalTimeArgs { - from: number; - to: number; - setQuery: ({ id, inspect, loading, refetch }: SetQuery) => void; - deleteQuery?: ({ id }: { id: string }) => void; - isInitializing: boolean; -} - -interface OwnProps { - children: (args: GlobalTimeArgs) => React.ReactNode; -} - -type GlobalTimeProps = OwnProps & PropsFromRedux; - -export const GlobalTimeComponent: React.FC = ({ - children, - deleteAllQuery, - deleteOneQuery, - from, - to, - setGlobalQuery, -}) => { - const [isInitializing, setIsInitializing] = useState(true); - - const setQuery = useCallback( - ({ id, inspect, loading, refetch }: SetQuery) => - setGlobalQuery({ inputId: 'global', id, inspect, loading, refetch }), - [setGlobalQuery] - ); - - const deleteQuery = useCallback( - ({ id }: { id: string }) => deleteOneQuery({ inputId: 'global', id }), - [deleteOneQuery] - ); - - useEffect(() => { - if (isInitializing) { - setIsInitializing(false); - } - return () => { - deleteAllQuery({ id: 'global' }); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return ( - <> - {children({ - isInitializing, - from, - to, - setQuery, - deleteQuery, - })} - - ); -}; - -const mapStateToProps = (state: State) => { - const timerange: inputsModel.TimeRange = inputsSelectors.globalTimeRangeSelector(state); - return { - from: timerange.from, - to: timerange.to, - }; -}; - -const mapDispatchToProps = { - deleteAllQuery: inputsActions.deleteAllQuery, - deleteOneQuery: inputsActions.deleteOneQuery, - setGlobalQuery: inputsActions.setQuery, -}; - -export const connector = connect(mapStateToProps, mapDispatchToProps); - -type PropsFromRedux = ConnectedProps; - -export const GlobalTime = connector(React.memo(GlobalTimeComponent)); - -GlobalTime.displayName = 'GlobalTime'; diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx new file mode 100644 index 0000000000000..9d5f1740b0276 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.test.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { act, renderHook } from '@testing-library/react-hooks'; + +import { useGlobalTime } from '.'; + +jest.mock('react-redux', () => { + const originalModule = jest.requireActual('react-redux'); + + return { + ...originalModule, + useDispatch: jest.fn().mockReturnValue(jest.fn()), + useSelector: jest.fn().mockReturnValue({ from: 0, to: 0 }), + }; +}); + +describe('useGlobalTime', () => { + test('returns memoized value', () => { + const { result, rerender } = renderHook(() => useGlobalTime()); + + const result1 = result.current; + act(() => rerender()); + const result2 = result.current; + + expect(result1).toBe(result2); + expect(result1.from).toBe(0); + expect(result1.to).toBe(0); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx b/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx new file mode 100644 index 0000000000000..b63616ecbcf56 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/containers/use_global_time/index.tsx @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useCallback, useState, useEffect, useMemo } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; + +import { inputsSelectors } from '../../store'; +import { inputsActions } from '../../store/actions'; +import { SetQuery, DeleteQuery } from './types'; + +export const useGlobalTime = () => { + const dispatch = useDispatch(); + const { from, to } = useSelector(inputsSelectors.globalTimeRangeSelector); + const [isInitializing, setIsInitializing] = useState(true); + + const setQuery = useCallback( + ({ id, inspect, loading, refetch }: SetQuery) => + dispatch(inputsActions.setQuery({ inputId: 'global', id, inspect, loading, refetch })), + [dispatch] + ); + + const deleteQuery = useCallback( + ({ id }: DeleteQuery) => dispatch(inputsActions.deleteOneQuery({ inputId: 'global', id })), + [dispatch] + ); + + useEffect(() => { + if (isInitializing) { + setIsInitializing(false); + } + return () => { + dispatch(inputsActions.deleteAllQuery({ id: 'global' })); + }; + }, [dispatch, isInitializing]); + + const memoizedReturn = useMemo( + () => ({ + isInitializing, + from, + to, + setQuery, + deleteQuery, + }), + [deleteQuery, from, isInitializing, setQuery, to] + ); + + return memoizedReturn; +}; + +export type GlobalTimeArgs = Omit, 'deleteQuery'> & + Partial, 'deleteQuery'>>; diff --git a/x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts b/x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts new file mode 100644 index 0000000000000..9903c29202b29 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/containers/use_global_time/types.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { inputsActions } from '../../store/actions'; + +export type SetQuery = Pick< + Parameters[0], + 'id' | 'inspect' | 'loading' | 'refetch' +>; + +export type DeleteQuery = Pick[0], 'id'>; diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.test.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.test.tsx index e520facf285c2..cce48a1e605b2 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.test.tsx @@ -21,6 +21,12 @@ jest.mock('../../../common/containers/source', () => ({ useWithSource: jest.fn().mockReturnValue({ indicesExist: true, indexPattern: mockIndexPattern }), })); +jest.mock('../../../common/containers/use_global_time', () => ({ + useGlobalTime: jest + .fn() + .mockReturnValue({ from: 0, isInitializing: false, to: 0, setQuery: jest.fn() }), +})); + // Test will fail because we will to need to mock some core services to make the test work // For now let's forget about SiemSearchBar and QueryBar jest.mock('../../../common/components/search_bar', () => ({ diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.tsx index 505d0f37ca039..acde0cbe1d42b 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/details_tabs.tsx @@ -12,6 +12,7 @@ import { scoreIntervalToDateTime } from '../../../common/components/ml/score/sco import { Anomaly } from '../../../common/components/ml/types'; import { HostsTableType } from '../../store/model'; import { AnomaliesQueryTabBody } from '../../../common/containers/anomalies/anomalies_query_tab_body'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import { AnomaliesHostTable } from '../../../common/components/ml/tables/anomalies_host_table'; import { HostDetailsTabsProps } from './types'; @@ -28,17 +29,13 @@ import { export const HostDetailsTabs = React.memo( ({ pageFilters, - deleteQuery, filterQuery, - from, - isInitializing, detailName, setAbsoluteRangeDatePicker, - setQuery, - to, indexPattern, hostDetailsPagePath, }) => { + const { from, to, isInitializing, deleteQuery, setQuery } = useGlobalTime(); const narrowDateRange = useCallback( (score: Anomaly, interval: string) => { const fromTo = scoreIntervalToDateTime(score, interval); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/index.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/index.tsx index 1c66a9edc1947..46823f037b61c 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/index.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/index.tsx @@ -27,6 +27,7 @@ import { SiemSearchBar } from '../../../common/components/search_bar'; import { WrapperPage } from '../../../common/components/wrapper_page'; import { HostOverviewByNameQuery } from '../../containers/hosts/overview'; import { KpiHostDetailsQuery } from '../../containers/kpi_host_details'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import { useWithSource } from '../../../common/containers/source'; import { LastEventIndexKey } from '../../../graphql/types'; import { useKibana } from '../../../common/lib/kibana'; @@ -50,17 +51,13 @@ const KpiHostDetailsManage = manageQuery(KpiHostsComponent); const HostDetailsComponent = React.memo( ({ filters, - from, - isInitializing, query, setAbsoluteRangeDatePicker, setHostDetailsTablesActivePageToZero, - setQuery, - to, detailName, - deleteQuery, hostDetailsPagePath, }) => { + const { to, from, deleteQuery, setQuery, isInitializing } = useGlobalTime(); useEffect(() => { setHostDetailsTablesActivePageToZero(); }, [setHostDetailsTablesActivePageToZero, detailName]); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/types.ts b/x-pack/plugins/security_solution/public/hosts/pages/details/types.ts index aa6288d473c91..7a440964c31ea 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/types.ts +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/types.ts @@ -32,7 +32,7 @@ interface HostDetailsComponentDispatchProps extends HostBodyComponentDispatchPro setHostDetailsTablesActivePageToZero: ActionCreator; } -export interface HostDetailsProps extends HostsQueryProps { +export interface HostDetailsProps { detailName: string; hostDetailsPagePath: string; } diff --git a/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx b/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx index 1ea3a3020a1d5..566f8f23efd39 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/hosts.test.tsx @@ -59,15 +59,8 @@ const mockHistory = { listen: jest.fn(), }; -const to = new Date('2018-03-23T18:49:23.132Z').valueOf(); -const from = new Date('2018-03-24T03:33:52.253Z').valueOf(); - describe('Hosts - rendering', () => { const hostProps: HostsComponentProps = { - from, - to, - setQuery: jest.fn(), - isInitializing: false, hostsPagePath: '', }; diff --git a/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx b/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx index f5cc651a30443..90438aec7c27e 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/hosts.tsx @@ -22,6 +22,7 @@ import { manageQuery } from '../../common/components/page/manage_query'; import { SiemSearchBar } from '../../common/components/search_bar'; import { WrapperPage } from '../../common/components/wrapper_page'; import { KpiHostsQuery } from '../containers/kpi_hosts'; +import { useGlobalTime } from '../../common/containers/use_global_time'; import { useWithSource } from '../../common/containers/source'; import { LastEventIndexKey } from '../../graphql/types'; import { useKibana } from '../../common/lib/kibana'; @@ -44,17 +45,8 @@ import { HostsTableType } from '../store/model'; const KpiHostsComponentManage = manageQuery(KpiHostsComponent); export const HostsComponent = React.memo( - ({ - deleteQuery, - isInitializing, - filters, - from, - query, - setAbsoluteRangeDatePicker, - setQuery, - to, - hostsPagePath, - }) => { + ({ filters, query, setAbsoluteRangeDatePicker, hostsPagePath }) => { + const { to, from, deleteQuery, setQuery, isInitializing } = useGlobalTime(); const capabilities = useMlCapabilities(); const kibana = useKibana(); const { tabName } = useParams(); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/index.tsx b/x-pack/plugins/security_solution/public/hosts/pages/index.tsx index c2285cf0a97e1..75cd36924dbba 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/index.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/index.tsx @@ -11,7 +11,6 @@ import { HostDetails } from './details'; import { HostsTableType } from '../store/model'; import { MlHostConditionalContainer } from '../../common/components/ml/conditional_links/ml_host_conditional_container'; -import { GlobalTime } from '../../common/containers/global_time'; import { Hosts } from './hosts'; import { hostsPagePath, hostDetailsPagePath } from './types'; @@ -36,72 +35,49 @@ type Props = Partial> & { url: string }; export const HostsContainer = React.memo(({ url }) => { const history = useHistory(); + return ( - - {({ to, from, setQuery, deleteQuery, isInitializing }) => ( - - ( - - )} - /> - ( - - )} - /> - ( - - )} - /> - { - history.replace(`${detailName}/${HostsTableType.authentications}${search}`); - return null; - }} - /> + + ( + + )} + /> + + + + } + /> + { + history.replace(`${detailName}/${HostsTableType.authentications}${search}`); + return null; + }} + /> - { - history.replace(`${HostsTableType.hosts}${search}`); - return null; - }} - /> - - )} - + { + history.replace(`${HostsTableType.hosts}${search}`); + return null; + }} + /> + ); }); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts b/x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts index 76f56fe1718aa..ddee940d11799 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts +++ b/x-pack/plugins/security_solution/public/hosts/pages/navigation/types.ts @@ -7,8 +7,7 @@ import { ESTermQuery } from '../../../../common/typed_json'; import { Filter, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { NarrowDateRange } from '../../../common/components/ml/types'; -import { InspectQuery, Refetch } from '../../../common/store/inputs/model'; - +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { HostsTableType, HostsType } from '../../store/model'; import { NavTab } from '../../../common/components/navigation/types'; import { UpdateDateRange } from '../../../common/components/charts/common'; @@ -24,31 +23,19 @@ type KeyHostsNavTab = KeyHostsNavTabWithoutMlPermission | KeyHostsNavTabWithMlPe export type HostsNavTab = Record; -export type SetQuery = ({ - id, - inspect, - loading, - refetch, -}: { - id: string; - inspect: InspectQuery | null; - loading: boolean; - refetch: Refetch; -}) => void; - export interface QueryTabBodyProps { type: HostsType; - startDate: number; - endDate: number; + startDate: GlobalTimeArgs['from']; + endDate: GlobalTimeArgs['to']; filterQuery?: string | ESTermQuery; } export type HostsComponentsQueryProps = QueryTabBodyProps & { - deleteQuery?: ({ id }: { id: string }) => void; + deleteQuery?: GlobalTimeArgs['deleteQuery']; indexPattern: IIndexPattern; pageFilters?: Filter[]; skip: boolean; - setQuery: SetQuery; + setQuery: GlobalTimeArgs['setQuery']; updateDateRange?: UpdateDateRange; narrowDateRange?: NarrowDateRange; }; diff --git a/x-pack/plugins/security_solution/public/hosts/pages/types.ts b/x-pack/plugins/security_solution/public/hosts/pages/types.ts index ffd17b0ef46f6..2c9ca4e4d27d9 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/types.ts +++ b/x-pack/plugins/security_solution/public/hosts/pages/types.ts @@ -8,23 +8,26 @@ import { IIndexPattern } from 'src/plugins/data/public'; import { ActionCreator } from 'typescript-fsa'; import { hostsModel } from '../store'; -import { GlobalTimeArgs } from '../../common/containers/global_time'; +import { GlobalTimeArgs } from '../../common/containers/use_global_time'; import { InputsModelId } from '../../common/store/inputs/constants'; export const hostsPagePath = '/'; export const hostDetailsPagePath = `/:detailName`; -export type HostsTabsProps = HostsComponentProps & { - filterQuery: string; - type: hostsModel.HostsType; - indexPattern: IIndexPattern; - setAbsoluteRangeDatePicker: ActionCreator<{ - id: InputsModelId; - from: number; - to: number; - }>; -}; +export type HostsTabsProps = HostsComponentProps & + GlobalTimeArgs & { + filterQuery: string; + type: hostsModel.HostsType; + indexPattern: IIndexPattern; + setAbsoluteRangeDatePicker: ActionCreator<{ + id: InputsModelId; + from: number; + to: number; + }>; + }; export type HostsQueryProps = GlobalTimeArgs; -export type HostsComponentProps = HostsQueryProps & { hostsPagePath: string }; +export interface HostsComponentProps { + hostsPagePath: string; +} diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx index 33eadad9aa774..76e197063fb8a 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx @@ -9,7 +9,6 @@ import React from 'react'; import { useIndexPatterns } from '../../../common/hooks/use_index_patterns'; import { EmbeddedMapComponent } from './embedded_map'; -import { SetQuery } from './types'; const mockUseIndexPatterns = useIndexPatterns as jest.Mock; jest.mock('../../../common/hooks/use_index_patterns'); @@ -18,7 +17,7 @@ mockUseIndexPatterns.mockImplementation(() => [true, []]); jest.mock('../../../common/lib/kibana'); describe('EmbeddedMapComponent', () => { - let setQuery: SetQuery; + let setQuery: jest.Mock; beforeEach(() => { setQuery = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.tsx index 6470fc270d0bf..81aa4b1671fca 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.tsx @@ -15,13 +15,13 @@ import { getIndexPatternTitleIdMapping } from '../../../common/hooks/api/helpers import { useIndexPatterns } from '../../../common/hooks/use_index_patterns'; import { Loader } from '../../../common/components/loader'; import { displayErrorToast, useStateToaster } from '../../../common/components/toasters'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { Embeddable } from './embeddable'; import { EmbeddableHeader } from './embeddable_header'; import { createEmbeddable, findMatchingIndexPatterns } from './embedded_map_helpers'; import { IndexPatternsMissingPrompt } from './index_patterns_missing_prompt'; import { MapToolTip } from './map_tool_tip/map_tool_tip'; import * as i18n from './translations'; -import { SetQuery } from './types'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { MapEmbeddable } from '../../../../../../plugins/maps/public/embeddable'; import { Query, Filter } from '../../../../../../../src/plugins/data/public'; @@ -73,7 +73,7 @@ export interface EmbeddedMapProps { filters: Filter[]; startDate: number; endDate: number; - setQuery: SetQuery; + setQuery: GlobalTimeArgs['setQuery']; } export const EmbeddedMapComponent = ({ diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map_helpers.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map_helpers.tsx index b0f8e2cc02403..c58e53d07acba 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map_helpers.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map_helpers.tsx @@ -8,7 +8,7 @@ import uuid from 'uuid'; import React from 'react'; import { OutPortal, PortalNode } from 'react-reverse-portal'; import minimatch from 'minimatch'; -import { IndexPatternMapping, SetQuery } from './types'; +import { IndexPatternMapping } from './types'; import { getLayerList } from './map_config'; import { MAP_SAVED_OBJECT_TYPE } from '../../../../../maps/public'; import { @@ -30,6 +30,7 @@ import { ErrorEmbeddable, } from '../../../../../../../src/plugins/embeddable/public'; import { IndexPatternSavedObject } from '../../../common/hooks/types'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; /** * Creates MapEmbeddable with provided initial configuration @@ -49,9 +50,9 @@ export const createEmbeddable = async ( filters: Filter[], indexPatterns: IndexPatternMapping[], query: Query, - startDate: number, - endDate: number, - setQuery: SetQuery, + startDate: GlobalTimeArgs['from'], + endDate: GlobalTimeArgs['to'], + setQuery: GlobalTimeArgs['setQuery'], portalNode: PortalNode, embeddableApi: EmbeddableStart ): Promise => { diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/types.ts b/x-pack/plugins/security_solution/public/network/components/embeddables/types.ts index e3ca3c5b84289..700071f88a4b5 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/types.ts +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/types.ts @@ -6,7 +6,6 @@ // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { RenderTooltipContentParams } from '../../../../../maps/public/classes/tooltips/tooltip_property'; -import { inputsModel } from '../../../common/store/inputs'; export interface IndexPatternMapping { title: string; @@ -29,12 +28,10 @@ export interface LayerMappingCollection { [indexPatternTitle: string]: LayerMapping; } -export type SetQuery = (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; -}) => void; +export interface MapFeature { + id: number; + layerId: string; +} export interface FeatureGeometry { coordinates: [number]; diff --git a/x-pack/plugins/security_solution/public/network/containers/network_dns/index.tsx b/x-pack/plugins/security_solution/public/network/containers/network_dns/index.tsx index 2bae19ce89aec..72e3161de5373 100644 --- a/x-pack/plugins/security_solution/public/network/containers/network_dns/index.tsx +++ b/x-pack/plugins/security_solution/public/network/containers/network_dns/index.tsx @@ -36,7 +36,7 @@ import { GetSubTitle, } from '../../../common/components/matrix_histogram/types'; import { UpdateDateRange } from '../../../common/components/charts/common'; -import { SetQuery } from '../../../hosts/pages/navigation/types'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { networkModel, networkSelectors } from '../../store'; const ID = 'networkDnsQuery'; @@ -67,7 +67,7 @@ interface DnsHistogramOwnProps extends QueryTemplatePaginatedProps { isDnsHistogram?: boolean; query: DocumentNode; scaleType: ScaleType; - setQuery: SetQuery; + setQuery: GlobalTimeArgs['setQuery']; showLegend?: boolean; stackByOptions: MatrixHistogramOption[]; subtitle?: string | GetSubTitle; diff --git a/x-pack/plugins/security_solution/public/network/pages/index.tsx b/x-pack/plugins/security_solution/public/network/pages/index.tsx index c7a8a5f705dfe..9ac05cc98bb45 100644 --- a/x-pack/plugins/security_solution/public/network/pages/index.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/index.tsx @@ -13,7 +13,6 @@ import { FlowTarget } from '../../graphql/types'; import { IPDetails } from './ip_details'; import { Network } from './network'; -import { GlobalTime } from '../../common/containers/global_time'; import { getNetworkRoutePath } from './navigation'; import { NetworkRouteType } from './navigation/types'; import { MlNetworkConditionalContainer } from '../../common/components/ml/conditional_links/ml_network_conditional_container'; @@ -36,71 +35,48 @@ const NetworkContainerComponent: React.FC = () => { ); return ( - - {({ to, from, setQuery, deleteQuery, isInitializing }) => ( - - ( - - )} - /> - ( - - )} - /> - ( - - )} - /> - { - history.replace(`ip/${detailName}/${FlowTarget.source}${search}`); - return null; - }} - /> - { - history.replace(`${NetworkRouteType.flows}${search}`); - return null; - }} - /> - - )} - + + ( + + )} + /> + + + + } + /> + { + history.replace(`ip/${detailName}/${FlowTarget.source}${search}`); + return null; + }} + /> + { + history.replace(`${NetworkRouteType.flows}${search}`); + return null; + }} + /> + ); }; diff --git a/x-pack/plugins/security_solution/public/network/pages/ip_details/index.test.tsx b/x-pack/plugins/security_solution/public/network/pages/ip_details/index.test.tsx index 962a6269f8488..92f39228f07a7 100644 --- a/x-pack/plugins/security_solution/public/network/pages/ip_details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/ip_details/index.test.tsx @@ -33,6 +33,11 @@ type GlobalWithFetch = NodeJS.Global & { fetch: jest.Mock }; jest.mock('../../../common/lib/kibana'); jest.mock('../../../common/containers/source'); +jest.mock('../../../common/containers/use_global_time', () => ({ + useGlobalTime: jest + .fn() + .mockReturnValue({ from: 0, isInitializing: false, to: 0, setQuery: jest.fn() }), +})); // Test will fail because we will to need to mock some core services to make the test work // For now let's forget about SiemSearchBar and QueryBar diff --git a/x-pack/plugins/security_solution/public/network/pages/ip_details/index.tsx b/x-pack/plugins/security_solution/public/network/pages/ip_details/index.tsx index 162b3a7c158d5..6686b40e3c429 100644 --- a/x-pack/plugins/security_solution/public/network/pages/ip_details/index.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/ip_details/index.tsx @@ -9,6 +9,7 @@ import React, { useCallback, useEffect } from 'react'; import { connect, ConnectedProps } from 'react-redux'; import { StickyContainer } from 'react-sticky'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; import { FiltersGlobal } from '../../../common/components/filters_global'; import { HeaderPage } from '../../../common/components/header_page'; import { LastEventTime } from '../../../common/components/last_event_time'; @@ -51,14 +52,11 @@ export const IPDetailsComponent: React.FC { + const { to, from, setQuery, isInitializing } = useGlobalTime(); const type = networkModel.NetworkType.details; const narrowDateRange = useCallback( (score, interval) => { diff --git a/x-pack/plugins/security_solution/public/network/pages/ip_details/types.ts b/x-pack/plugins/security_solution/public/network/pages/ip_details/types.ts index 02d83208884b4..75fb5007f2701 100644 --- a/x-pack/plugins/security_solution/public/network/pages/ip_details/types.ts +++ b/x-pack/plugins/security_solution/public/network/pages/ip_details/types.ts @@ -8,16 +8,15 @@ import { IIndexPattern } from 'src/plugins/data/public'; import { ESTermQuery } from '../../../../common/typed_json'; import { NetworkType } from '../../store/model'; -import { InspectQuery, Refetch } from '../../../common/store/inputs/model'; import { FlowTarget, FlowTargetSourceDest } from '../../../graphql/types'; -import { GlobalTimeArgs } from '../../../common/containers/global_time'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; export const type = NetworkType.details; -export type IPDetailsComponentProps = GlobalTimeArgs & { +export interface IPDetailsComponentProps { detailName: string; flowTarget: FlowTarget; -}; +} export interface OwnProps { type: NetworkType; @@ -26,17 +25,7 @@ export interface OwnProps { filterQuery: string | ESTermQuery; ip: string; skip: boolean; - setQuery: ({ - id, - inspect, - loading, - refetch, - }: { - id: string; - inspect: InspectQuery | null; - loading: boolean; - refetch: Refetch; - }) => void; + setQuery: GlobalTimeArgs['setQuery']; } export type NetworkComponentsQueryProps = OwnProps & { diff --git a/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts b/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts index 433ed7fffd741..6986d10ad3523 100644 --- a/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts +++ b/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts @@ -10,7 +10,7 @@ import { IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { NavTab } from '../../../common/components/navigation/types'; import { FlowTargetSourceDest } from '../../../graphql/types'; import { networkModel } from '../../store'; -import { GlobalTimeArgs } from '../../../common/containers/global_time'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { SetAbsoluteRangeDatePicker } from '../types'; import { NarrowDateRange } from '../../../common/components/ml/types'; diff --git a/x-pack/plugins/security_solution/public/network/pages/network.tsx b/x-pack/plugins/security_solution/public/network/pages/network.tsx index 4275c1641f517..bdaac1ac049e5 100644 --- a/x-pack/plugins/security_solution/public/network/pages/network.tsx +++ b/x-pack/plugins/security_solution/public/network/pages/network.tsx @@ -23,6 +23,7 @@ import { KpiNetworkComponent } from '..//components/kpi_network'; import { SiemSearchBar } from '../../common/components/search_bar'; import { WrapperPage } from '../../common/components/wrapper_page'; import { KpiNetworkQuery } from '../../network/containers/kpi_network'; +import { useGlobalTime } from '../../common/containers/use_global_time'; import { useWithSource } from '../../common/containers/source'; import { LastEventIndexKey } from '../../graphql/types'; import { useKibana } from '../../common/lib/kibana'; @@ -47,13 +48,10 @@ const NetworkComponent = React.memo( query, setAbsoluteRangeDatePicker, networkPagePath, - to, - from, - setQuery, - isInitializing, hasMlUserPermissions, capabilitiesFetched, }) => { + const { to, from, setQuery, isInitializing } = useGlobalTime(); const kibana = useKibana(); const { tabName } = useParams(); diff --git a/x-pack/plugins/security_solution/public/network/pages/types.ts b/x-pack/plugins/security_solution/public/network/pages/types.ts index e4170ee4b908b..54ff5a8d50b8e 100644 --- a/x-pack/plugins/security_solution/public/network/pages/types.ts +++ b/x-pack/plugins/security_solution/public/network/pages/types.ts @@ -7,7 +7,6 @@ import { RouteComponentProps } from 'react-router-dom'; import { ActionCreator } from 'typescript-fsa'; import { InputsModelId } from '../../common/store/inputs/constants'; -import { GlobalTimeArgs } from '../../common/containers/global_time'; export type SetAbsoluteRangeDatePicker = ActionCreator<{ id: InputsModelId; @@ -15,9 +14,8 @@ export type SetAbsoluteRangeDatePicker = ActionCreator<{ to: number; }>; -export type NetworkComponentProps = Partial> & - GlobalTimeArgs & { - networkPagePath: string; - hasMlUserPermissions: boolean; - capabilitiesFetched: boolean; - }; +export type NetworkComponentProps = Partial> & { + networkPagePath: string; + hasMlUserPermissions: boolean; + capabilitiesFetched: boolean; +}; diff --git a/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx b/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx index 03e8279f01db7..6e59d81a1eae9 100644 --- a/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx @@ -19,7 +19,6 @@ import { IIndexPattern, Query, } from '../../../../../../../src/plugins/data/public'; -import { inputsModel } from '../../../common/store'; import { HostsTableType, HostsType } from '../../../hosts/store/model'; import * as i18n from '../../pages/translations'; @@ -29,6 +28,7 @@ import { } from '../../../common/components/alerts_viewer/histogram_configs'; import { MatrixHisrogramConfigs } from '../../../common/components/matrix_histogram/types'; import { getTabsOnHostsUrl } from '../../../common/components/link_to/redirect_to_hosts'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { SecurityPageName } from '../../../app/types'; import { useFormatUrl } from '../../../common/components/link_to'; import { LinkButton } from '../../../common/components/links'; @@ -39,20 +39,11 @@ const NO_FILTERS: Filter[] = []; const DEFAULT_QUERY: Query = { query: '', language: 'kuery' }; const DEFAULT_STACK_BY = 'event.module'; -interface Props { - deleteQuery?: ({ id }: { id: string }) => void; +interface Props extends Pick { filters?: Filter[]; - from: number; hideHeaderChildren?: boolean; indexPattern: IIndexPattern; query?: Query; - setQuery: (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; - to: number; } const AlertsByCategoryComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx b/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx index 1773af86a382f..23f5998f44111 100644 --- a/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx @@ -20,7 +20,7 @@ import { IIndexPattern, Query, } from '../../../../../../../src/plugins/data/public'; -import { inputsModel } from '../../../common/store'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; const HorizontalSpacer = styled(EuiFlexItem)` width: 24px; @@ -29,18 +29,10 @@ const HorizontalSpacer = styled(EuiFlexItem)` const NO_FILTERS: Filter[] = []; const DEFAULT_QUERY: Query = { query: '', language: 'kuery' }; -interface Props { +interface Props extends Pick { filters?: Filter[]; - from: number; indexPattern: IIndexPattern; query?: Query; - setQuery: (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; - to: number; } const EventCountsComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx index 7d42f744a2613..f18fccee50e22 100644 --- a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx @@ -27,9 +27,9 @@ import { IIndexPattern, Query, } from '../../../../../../../src/plugins/data/public'; -import { inputsModel } from '../../../common/store'; import { HostsTableType, HostsType } from '../../../hosts/store/model'; import { InputsModelId } from '../../../common/store/inputs/constants'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import * as i18n from '../../pages/translations'; import { SecurityPageName } from '../../../app/types'; @@ -42,26 +42,17 @@ const DEFAULT_STACK_BY = 'event.dataset'; const ID = 'eventsByDatasetOverview'; -interface Props { +interface Props extends Pick { combinedQueries?: string; - deleteQuery?: ({ id }: { id: string }) => void; filters?: Filter[]; - from: number; headerChildren?: React.ReactNode; indexPattern: IIndexPattern; indexToAdd?: string[] | null; onlyField?: string; query?: Query; setAbsoluteRangeDatePickerTarget?: InputsModelId; - setQuery: (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; showSpacer?: boolean; timelineId?: string; - to: number; } const getHistogramOption = (fieldName: string): MatrixHistogramOption => ({ diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx b/x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx index 195bb4fa0807a..583c76d1464a8 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/overview_host/index.tsx @@ -18,26 +18,16 @@ import { useUiSetting$, useKibana } from '../../../common/lib/kibana'; import { getHostsUrl, useFormatUrl } from '../../../common/components/link_to'; import { getOverviewHostStats, OverviewHostStats } from '../overview_host_stats'; import { manageQuery } from '../../../common/components/page/manage_query'; -import { inputsModel } from '../../../common/store/inputs'; import { InspectButtonContainer } from '../../../common/components/inspect'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { SecurityPageName } from '../../../app/types'; import { LinkButton } from '../../../common/components/links'; export interface OwnProps { - startDate: number; - endDate: number; + startDate: GlobalTimeArgs['from']; + endDate: GlobalTimeArgs['to']; filterQuery?: ESQuery | string; - setQuery: ({ - id, - inspect, - loading, - refetch, - }: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; + setQuery: GlobalTimeArgs['setQuery']; } const OverviewHostStatsManage = manageQuery(OverviewHostStats); diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx b/x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx index a3760863bcb62..8282eaeb63c28 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/overview_network/index.tsx @@ -19,28 +19,18 @@ import { ID as OverviewNetworkQueryId, OverviewNetworkQuery, } from '../../containers/overview_network'; -import { inputsModel } from '../../../common/store/inputs'; import { getOverviewNetworkStats, OverviewNetworkStats } from '../overview_network_stats'; import { getNetworkUrl, useFormatUrl } from '../../../common/components/link_to'; import { InspectButtonContainer } from '../../../common/components/inspect'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; import { SecurityPageName } from '../../../app/types'; import { LinkButton } from '../../../common/components/links'; export interface OverviewNetworkProps { - startDate: number; - endDate: number; + startDate: GlobalTimeArgs['from']; + endDate: GlobalTimeArgs['to']; filterQuery?: ESQuery | string; - setQuery: ({ - id, - inspect, - loading, - refetch, - }: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; + setQuery: GlobalTimeArgs['setQuery']; } const OverviewNetworkStatsManage = manageQuery(OverviewNetworkStats); diff --git a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx index 41152dabe2ad8..8b62df60b257f 100644 --- a/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/signals_by_category/index.tsx @@ -11,19 +11,17 @@ import { alertsHistogramOptions } from '../../../alerts/components/alerts_histog import { useSignalIndex } from '../../../alerts/containers/detection_engine/alerts/use_signal_index'; import { SetAbsoluteRangeDatePicker } from '../../../network/pages/types'; import { Filter, IIndexPattern, Query } from '../../../../../../../src/plugins/data/public'; -import { inputsModel } from '../../../common/store'; import { InputsModelId } from '../../../common/store/inputs/constants'; import * as i18n from '../../pages/translations'; import { UpdateDateRange } from '../../../common/components/charts/common'; +import { GlobalTimeArgs } from '../../../common/containers/use_global_time'; const DEFAULT_QUERY: Query = { query: '', language: 'kuery' }; const DEFAULT_STACK_BY = 'signal.rule.threat.tactic.name'; const NO_FILTERS: Filter[] = []; -interface Props { - deleteQuery?: ({ id }: { id: string }) => void; +interface Props extends Pick { filters?: Filter[]; - from: number; headerChildren?: React.ReactNode; indexPattern: IIndexPattern; /** Override all defaults, and only display this field */ @@ -31,14 +29,7 @@ interface Props { query?: Query; setAbsoluteRangeDatePicker: SetAbsoluteRangeDatePicker; setAbsoluteRangeDatePickerTarget?: InputsModelId; - setQuery: (params: { - id: string; - inspect: inputsModel.InspectQuery | null; - loading: boolean; - refetch: inputsModel.Refetch; - }) => void; timelineId?: string; - to: number; } const SignalsByCategoryComponent: React.FC = ({ diff --git a/x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx b/x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx index bf5e7f0c211b1..9613a1e7210a3 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/overview.test.tsx @@ -19,6 +19,11 @@ import { Overview } from './index'; jest.mock('../../common/lib/kibana'); jest.mock('../../common/containers/source'); +jest.mock('../../common/containers/use_global_time', () => ({ + useGlobalTime: jest + .fn() + .mockReturnValue({ from: 0, isInitializing: false, to: 0, setQuery: jest.fn() }), +})); // Test will fail because we will to need to mock some core services to make the test work // For now let's forget about SiemSearchBar and QueryBar diff --git a/x-pack/plugins/security_solution/public/overview/pages/overview.tsx b/x-pack/plugins/security_solution/public/overview/pages/overview.tsx index b8b8a67024c9f..2a522d3ea8fde 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/overview.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/overview.tsx @@ -5,7 +5,7 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import React, { useState, useMemo } from 'react'; +import React, { useCallback, useState, useMemo } from 'react'; import { connect, ConnectedProps } from 'react-redux'; import { StickyContainer } from 'react-sticky'; import { Query, Filter } from 'src/plugins/data/public'; @@ -15,7 +15,7 @@ import { AlertsByCategory } from '../components/alerts_by_category'; import { FiltersGlobal } from '../../common/components/filters_global'; import { SiemSearchBar } from '../../common/components/search_bar'; import { WrapperPage } from '../../common/components/wrapper_page'; -import { GlobalTime } from '../../common/containers/global_time'; +import { useGlobalTime } from '../../common/containers/use_global_time'; import { useWithSource } from '../../common/containers/source'; import { EventsByDataset } from '../components/events_by_dataset'; import { EventCounts } from '../components/event_counts'; @@ -46,6 +46,7 @@ const OverviewComponent: React.FC = ({ return [ENDPOINT_METADATA_INDEX]; }, []); + const { from, deleteQuery, setQuery, to } = useGlobalTime(); const { indicesExist, indexPattern } = useWithSource(); const { indicesExist: metadataIndexExists } = useWithSource( 'default', @@ -59,10 +60,10 @@ const OverviewComponent: React.FC = ({ ); const [dismissMessage, setDismissMessage] = useState(hasDismissEndpointNoticeMessage); - const dismissEndpointNotice = () => { + const dismissEndpointNotice = useCallback(() => { setDismissMessage(true); addMessage('management', 'dismissEndpointNotice'); - }; + }, [addMessage]); return ( <> @@ -85,59 +86,55 @@ const OverviewComponent: React.FC = ({ - - {({ from, deleteQuery, setQuery, to }) => ( - - - - - - - - - - - - - - - - - - - )} - + + + + + + + + + + + + + + + + + + From 2c27bad7c9f06a1c7d73dcd98f09191e6a34efc5 Mon Sep 17 00:00:00 2001 From: Vadim Dalecky Date: Mon, 6 Jul 2020 05:21:05 -0700 Subject: [PATCH 49/59] =?UTF-8?q?test:=20=F0=9F=92=8D=20delete=20a=20flaky?= =?UTF-8?q?=20test=20(#70785)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expressions/common/execution/execution.test.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/plugins/expressions/common/execution/execution.test.ts b/src/plugins/expressions/common/execution/execution.test.ts index 2e83d16dd778e..4e73d27c1c4a1 100644 --- a/src/plugins/expressions/common/execution/execution.test.ts +++ b/src/plugins/expressions/common/execution/execution.test.ts @@ -475,17 +475,6 @@ describe('Execution', () => { } }); - test('sets duration to 10 milliseconds when function executes 10 milliseconds', async () => { - const execution = createExecution('sleep 10', {}, true); - execution.start(-1); - await execution.result; - - const node = execution.state.get().ast.chain[0]; - expect(typeof node.debug?.duration).toBe('number'); - expect(node.debug?.duration).toBeLessThan(50); - expect(node.debug?.duration).toBeGreaterThanOrEqual(5); - }); - test('adds .debug field in expression AST on each executed function', async () => { const execution = createExecution('add val=1 | add val=2 | add val=3', {}, true); execution.start(-1); From d12a80e23296cdd343fb8b9096c1e7bee0481b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Mon, 6 Jul 2020 15:06:29 +0200 Subject: [PATCH 50/59] [APM] Update docs on running API tests (#70765) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [APM] Update docs on running API tests * Update x-pack/plugins/apm/readme.md Co-authored-by: Cauê Marcondes <55978943+cauemarcondes@users.noreply.github.com> * Update x-pack/plugins/apm/readme.md Co-authored-by: Cauê Marcondes <55978943+cauemarcondes@users.noreply.github.com> --- x-pack/plugins/apm/readme.md | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/apm/readme.md b/x-pack/plugins/apm/readme.md index 778b1f2ad2d91..f460ff6ff9bf2 100644 --- a/x-pack/plugins/apm/readme.md +++ b/x-pack/plugins/apm/readme.md @@ -81,37 +81,32 @@ For debugging access Elasticsearch on http://localhost:9220` (elastic/changeme) ### API integration tests Our tests are separated in two suites: one suite runs with a basic license, and the other -with a trial license (the equivalent of gold+). This requires separate test servers and test runs. +with a trial license (the equivalent of gold+). This requires separate test servers and test runners. -**Start server** - -Basic: +**Basic** ``` +# Start server node scripts/functional_tests_server --config x-pack/test/apm_api_integration/basic/config.ts -``` - -Trial: -``` -node scripts/functional_tests_server --config x-pack/test/apm_api_integration/trial/config.ts +# Run tests +node scripts/functional_test_runner --config x-pack/test/apm_api_integration/basic/config.ts ``` -**Run tests** +The API tests for "basic" are located in `x-pack/test/apm_api_integration/basic/tests`. -Basic: +**Trial** ``` -node scripts/functional_test_runner --config x-pack/test/apm_api_integration/basic/config.ts -``` - -Trial: +# Start server +node scripts/functional_tests_server --config x-pack/test/apm_api_integration/trial/config.ts -``` +# Run tests node scripts/functional_test_runner --config x-pack/test/apm_api_integration/trial/config.ts ``` -APM tests are located in `x-pack/test/apm_api_integration`. +The API tests for "trial" are located in `x-pack/test/apm_api_integration/trial/tests`. + For debugging access Elasticsearch on http://localhost:9220` (elastic/changeme) ### Linting From 68ebd0488302d8ad40cdfbd9c1280c4e72c52fb1 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Mon, 6 Jul 2020 15:31:53 +0200 Subject: [PATCH 51/59] [Discover] Migrate server side saved object from data to discover plugin (#70342) --- .../data/server/saved_objects/index.ts | 2 -- .../data/server/search/search_service.ts | 3 --- src/plugins/discover/server/plugin.ts | 2 ++ .../discover/server/saved_objects/index.ts | 20 +++++++++++++++++++ .../server/saved_objects/search.ts | 12 +++++------ .../saved_objects/search_migrations.test.ts | 8 ++++---- .../server/saved_objects/search_migrations.ts | 4 ++-- 7 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 src/plugins/discover/server/saved_objects/index.ts rename src/plugins/{data => discover}/server/saved_objects/search.ts (84%) rename src/plugins/{data => discover}/server/saved_objects/search_migrations.test.ts (96%) rename src/plugins/{data => discover}/server/saved_objects/search_migrations.ts (97%) diff --git a/src/plugins/data/server/saved_objects/index.ts b/src/plugins/data/server/saved_objects/index.ts index 4326200141179..102183fc1c5ed 100644 --- a/src/plugins/data/server/saved_objects/index.ts +++ b/src/plugins/data/server/saved_objects/index.ts @@ -16,8 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - -export { searchSavedObjectType } from './search'; export { querySavedObjectType } from './query'; export { indexPatternSavedObjectType } from './index_patterns'; export { kqlTelemetry } from './kql_telementry'; diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts index df809b425eb9e..34ed8c6c6f401 100644 --- a/src/plugins/data/server/search/search_service.ts +++ b/src/plugins/data/server/search/search_service.ts @@ -27,7 +27,6 @@ import { } from './types'; import { registerSearchRoute } from './routes'; import { ES_SEARCH_STRATEGY, esSearchStrategyProvider } from './es_search'; -import { searchSavedObjectType } from '../saved_objects'; import { DataPluginStart } from '../plugin'; export class SearchService implements Plugin { @@ -36,8 +35,6 @@ export class SearchService implements Plugin { constructor(private initializerContext: PluginInitializerContext) {} public setup(core: CoreSetup): ISearchSetup { - core.savedObjects.registerType(searchSavedObjectType); - this.registerSearchStrategy( ES_SEARCH_STRATEGY, esSearchStrategyProvider(this.initializerContext.config.legacy.globalConfig$) diff --git a/src/plugins/discover/server/plugin.ts b/src/plugins/discover/server/plugin.ts index a7445a5189163..77553ce644839 100644 --- a/src/plugins/discover/server/plugin.ts +++ b/src/plugins/discover/server/plugin.ts @@ -20,11 +20,13 @@ import { CoreSetup, CoreStart, Plugin } from 'kibana/server'; import { uiSettings } from './ui_settings'; import { capabilitiesProvider } from './capabilities_provider'; +import { searchSavedObjectType } from './saved_objects'; export class DiscoverServerPlugin implements Plugin { public setup(core: CoreSetup) { core.capabilities.registerProvider(capabilitiesProvider); core.uiSettings.register(uiSettings); + core.savedObjects.registerType(searchSavedObjectType); return {}; } diff --git a/src/plugins/discover/server/saved_objects/index.ts b/src/plugins/discover/server/saved_objects/index.ts new file mode 100644 index 0000000000000..efe785364ccb6 --- /dev/null +++ b/src/plugins/discover/server/saved_objects/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { searchSavedObjectType } from './search'; diff --git a/src/plugins/data/server/saved_objects/search.ts b/src/plugins/discover/server/saved_objects/search.ts similarity index 84% rename from src/plugins/data/server/saved_objects/search.ts rename to src/plugins/discover/server/saved_objects/search.ts index 16caaf05a0fc6..2348d89c4f4dd 100644 --- a/src/plugins/data/server/saved_objects/search.ts +++ b/src/plugins/discover/server/saved_objects/search.ts @@ -18,7 +18,7 @@ */ import { SavedObjectsType } from 'kibana/server'; -import { searchSavedObjectTypeMigrations } from './search_migrations'; +import { searchMigrations } from './search_migrations'; export const searchSavedObjectType: SavedObjectsType = { name: 'search', @@ -43,18 +43,18 @@ export const searchSavedObjectType: SavedObjectsType = { }, mappings: { properties: { - columns: { type: 'keyword' }, + columns: { type: 'keyword', index: false }, description: { type: 'text' }, - hits: { type: 'integer' }, + hits: { type: 'integer', index: false }, kibanaSavedObjectMeta: { properties: { - searchSourceJSON: { type: 'text' }, + searchSourceJSON: { type: 'text', index: false }, }, }, - sort: { type: 'keyword' }, + sort: { type: 'keyword', index: false }, title: { type: 'text' }, version: { type: 'integer' }, }, }, - migrations: searchSavedObjectTypeMigrations as any, + migrations: searchMigrations as any, }; diff --git a/src/plugins/data/server/saved_objects/search_migrations.test.ts b/src/plugins/discover/server/saved_objects/search_migrations.test.ts similarity index 96% rename from src/plugins/data/server/saved_objects/search_migrations.test.ts rename to src/plugins/discover/server/saved_objects/search_migrations.test.ts index 69db08a689255..babd25c03dbb2 100644 --- a/src/plugins/data/server/saved_objects/search_migrations.test.ts +++ b/src/plugins/discover/server/saved_objects/search_migrations.test.ts @@ -18,13 +18,13 @@ */ import { SavedObjectMigrationContext } from 'kibana/server'; -import { searchSavedObjectTypeMigrations } from './search_migrations'; +import { searchMigrations } from './search_migrations'; const savedObjectMigrationContext = (null as unknown) as SavedObjectMigrationContext; describe('migration search', () => { describe('6.7.2', () => { - const migrationFn = searchSavedObjectTypeMigrations['6.7.2']; + const migrationFn = searchMigrations['6.7.2']; it('should migrate obsolete match_all query', () => { const migratedDoc = migrationFn( @@ -56,7 +56,7 @@ describe('migration search', () => { }); describe('7.0.0', () => { - const migrationFn = searchSavedObjectTypeMigrations['7.0.0']; + const migrationFn = searchMigrations['7.0.0']; test('skips errors when searchSourceJSON is null', () => { const doc = { @@ -278,7 +278,7 @@ Object { }); describe('7.4.0', function () { - const migrationFn = searchSavedObjectTypeMigrations['7.4.0']; + const migrationFn = searchMigrations['7.4.0']; test('transforms one dimensional sort arrays into two dimensional arrays', () => { const doc = { diff --git a/src/plugins/data/server/saved_objects/search_migrations.ts b/src/plugins/discover/server/saved_objects/search_migrations.ts similarity index 97% rename from src/plugins/data/server/saved_objects/search_migrations.ts rename to src/plugins/discover/server/saved_objects/search_migrations.ts index 9bba429f8d71b..0302159c43c56 100644 --- a/src/plugins/data/server/saved_objects/search_migrations.ts +++ b/src/plugins/discover/server/saved_objects/search_migrations.ts @@ -19,7 +19,7 @@ import { flow, get } from 'lodash'; import { SavedObjectMigrationFn } from 'kibana/server'; -import { DEFAULT_QUERY_LANGUAGE } from '../../common'; +import { DEFAULT_QUERY_LANGUAGE } from '../../../data/common'; const migrateMatchAllQuery: SavedObjectMigrationFn = (doc) => { const searchSourceJSON = get(doc, 'attributes.kibanaSavedObjectMeta.searchSourceJSON'); @@ -121,7 +121,7 @@ const migrateSearchSortToNestedArray: SavedObjectMigrationFn = (doc) = }; }; -export const searchSavedObjectTypeMigrations = { +export const searchMigrations = { '6.7.2': flow(migrateMatchAllQuery), '7.0.0': flow(setNewReferences), '7.4.0': flow(migrateSearchSortToNestedArray), From e298317586a53e7e5293537bc371991b528c7b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Mon, 6 Jul 2020 15:33:17 +0200 Subject: [PATCH 52/59] =?UTF-8?q?[APM]=20Fix=20flaky=20e2e=E2=80=99s=20(#7?= =?UTF-8?q?0790)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apm/e2e/cypress/integration/helpers.ts | 15 +- .../apm/e2e/cypress/integration/snapshots.js | 9 +- .../cypress/support/step_definitions/apm.ts | 14 +- x-pack/plugins/apm/e2e/package.json | 18 +- x-pack/plugins/apm/e2e/run-e2e.sh | 10 +- x-pack/plugins/apm/e2e/yarn.lock | 304 +++++++----------- 6 files changed, 149 insertions(+), 221 deletions(-) diff --git a/x-pack/plugins/apm/e2e/cypress/integration/helpers.ts b/x-pack/plugins/apm/e2e/cypress/integration/helpers.ts index 689b88390810f..5791dfe5b9463 100644 --- a/x-pack/plugins/apm/e2e/cypress/integration/helpers.ts +++ b/x-pack/plugins/apm/e2e/cypress/integration/helpers.ts @@ -6,9 +6,6 @@ /* eslint-disable import/no-extraneous-dependencies */ -const RANGE_FROM = '2020-06-01T14:59:32.686Z'; -const RANGE_TO = '2020-06-16T16:59:36.219Z'; - const BASE_URL = Cypress.config().baseUrl; /** The default time in ms to wait for a Cypress command to complete */ @@ -16,20 +13,14 @@ export const DEFAULT_TIMEOUT = 60 * 1000; export function loginAndWaitForPage( url: string, - dateRange?: { to: string; from: string } + dateRange: { to: string; from: string } ) { const username = Cypress.env('elasticsearch_username'); const password = Cypress.env('elasticsearch_password'); cy.log(`Authenticating via ${username} / ${password}`); - let rangeFrom = RANGE_FROM; - let rangeTo = RANGE_TO; - if (dateRange) { - rangeFrom = dateRange.from; - rangeTo = dateRange.to; - } - - const fullUrl = `${BASE_URL}${url}?rangeFrom=${rangeFrom}&rangeTo=${rangeTo}`; + + const fullUrl = `${BASE_URL}${url}?rangeFrom=${dateRange.from}&rangeTo=${dateRange.to}`; cy.visit(fullUrl, { auth: { username, password } }); cy.viewport('macbook-15'); diff --git a/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js b/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js index ac09e575a46ae..7fbce2583903c 100644 --- a/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js +++ b/x-pack/plugins/apm/e2e/cypress/integration/snapshots.js @@ -1,12 +1,5 @@ module.exports = { - "__version": "4.5.0", - "APM": { - "Transaction duration charts": { - "1": "55 ms", - "2": "28 ms", - "3": "0 ms" - } - }, + "__version": "4.9.0", "RUM Dashboard": { "Client metrics": { "1": "55 ", diff --git a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/apm.ts b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/apm.ts index 361d055db9ac1..c1402bbd035f4 100644 --- a/x-pack/plugins/apm/e2e/cypress/support/step_definitions/apm.ts +++ b/x-pack/plugins/apm/e2e/cypress/support/step_definitions/apm.ts @@ -12,7 +12,10 @@ export const DEFAULT_TIMEOUT = 60 * 1000; Given(`a user browses the APM UI application`, () => { // open service overview page - loginAndWaitForPage(`/app/apm#/services`); + loginAndWaitForPage(`/app/apm#/services`, { + from: '2020-06-01T14:59:32.686Z', + to: '2020-06-16T16:59:36.219Z', + }); }); When(`the user inspects the opbeans-node service`, () => { @@ -34,9 +37,8 @@ Then(`should have correct y-axis ticks`, () => { // wait for all loading to finish cy.get('kbnLoadingIndicator').should('not.be.visible'); - cy.get(yAxisTick).eq(2).invoke('text').snapshot(); - - cy.get(yAxisTick).eq(1).invoke('text').snapshot(); - - cy.get(yAxisTick).eq(0).invoke('text').snapshot(); + // literal assertions because snapshot() doesn't retry + cy.get(yAxisTick).eq(2).should('have.text', '55 ms'); + cy.get(yAxisTick).eq(1).should('have.text', '28 ms'); + cy.get(yAxisTick).eq(0).should('have.text', '0 ms'); }); diff --git a/x-pack/plugins/apm/e2e/package.json b/x-pack/plugins/apm/e2e/package.json index 417dda4c5220e..5101e64235c62 100644 --- a/x-pack/plugins/apm/e2e/package.json +++ b/x-pack/plugins/apm/e2e/package.json @@ -9,19 +9,19 @@ }, "dependencies": { "@cypress/snapshot": "^2.1.3", - "@cypress/webpack-preprocessor": "^5.2.0", + "@cypress/webpack-preprocessor": "^5.4.1", "@types/cypress-cucumber-preprocessor": "^1.14.1", - "@types/node": "^14.0.1", + "@types/node": "^14.0.14", "axios": "^0.19.2", - "cypress": "^4.5.0", - "cypress-cucumber-preprocessor": "^2.3.1", + "cypress": "^4.9.0", + "cypress-cucumber-preprocessor": "^2.5.2", "ora": "^4.0.4", - "p-limit": "^2.3.0", + "p-limit": "^3.0.1", "p-retry": "^4.2.0", - "ts-loader": "^7.0.4", - "typescript": "3.9.5", - "wait-on": "^5.0.0", + "ts-loader": "^7.0.5", + "typescript": "3.9.6", + "wait-on": "^5.0.1", "webpack": "^4.43.0", - "yargs": "^15.3.1" + "yargs": "^15.4.0" } } diff --git a/x-pack/plugins/apm/e2e/run-e2e.sh b/x-pack/plugins/apm/e2e/run-e2e.sh index 43cc74a197f42..bc64f2b009d52 100755 --- a/x-pack/plugins/apm/e2e/run-e2e.sh +++ b/x-pack/plugins/apm/e2e/run-e2e.sh @@ -106,10 +106,12 @@ yarn &> ${TMP_DIR}/e2e-yarn.log echo "" # newline echo "${bold}Static mock data (logs: ${E2E_DIR}${TMP_DIR}/ingest-data.log)${normal}" +STATIC_MOCK_FILENAME='2020-06-12.json' + # Download static data if not already done -if [ ! -e "${TMP_DIR}/events.json" ]; then - echo 'Downloading events.json...' - curl --silent https://storage.googleapis.com/apm-ui-e2e-static-data/2020-06-12.json --output ${TMP_DIR}/events.json +if [ ! -e "${TMP_DIR}/${STATIC_MOCK_FILENAME}" ]; then + echo "Downloading ${STATIC_MOCK_FILENAME}..." + curl --silent https://storage.googleapis.com/apm-ui-e2e-static-data/${STATIC_MOCK_FILENAME} --output ${TMP_DIR}/${STATIC_MOCK_FILENAME} fi # echo "Deleting existing indices (apm* and .apm*)" @@ -117,7 +119,7 @@ curl --silent --user admin:changeme -XDELETE "localhost:${ELASTICSEARCH_PORT}/.a curl --silent --user admin:changeme -XDELETE "localhost:${ELASTICSEARCH_PORT}/apm*" > /dev/null # Ingest data into APM Server -node ingest-data/replay.js --server-url http://localhost:$APM_SERVER_PORT --events ${TMP_DIR}/events.json 2>> ${TMP_DIR}/ingest-data.log +node ingest-data/replay.js --server-url http://localhost:$APM_SERVER_PORT --events ${TMP_DIR}/${STATIC_MOCK_FILENAME} 2>> ${TMP_DIR}/ingest-data.log # Abort if not all events were ingested correctly if [ $? -ne 0 ]; then diff --git a/x-pack/plugins/apm/e2e/yarn.lock b/x-pack/plugins/apm/e2e/yarn.lock index 975154d71b85d..936294052aa7b 100644 --- a/x-pack/plugins/apm/e2e/yarn.lock +++ b/x-pack/plugins/apm/e2e/yarn.lock @@ -689,6 +689,14 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" +"@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + "@babel/runtime@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" @@ -802,13 +810,14 @@ snap-shot-compare "2.8.3" snap-shot-store "1.2.3" -"@cypress/webpack-preprocessor@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.2.0.tgz#3a17b478f6e2d600e536e6dda9c2e349d25a297e" - integrity sha512-uvo0FfKL+rIXrBGS6qPIaJRD8euK+t6YoZvrTuLPnStprzlgeGfSCnCDUEMJZqFk9LwBd1NtOop+J7qNuv74ng== +"@cypress/webpack-preprocessor@^5.4.1": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.4.1.tgz#eb58f6cd02932a95653c1a674cfd769da2409806" + integrity sha512-1E2BdVVXQ4wDQ7f3mXCvS9xmfTVwEoT3oqKhjAr1iNlTJpBq10Z0VNBZd3VZ3nmCTFwTuUvs735QGnRE1gQ1BA== dependencies: bluebird "3.7.1" debug "4.1.1" + lodash "4.17.15" "@cypress/xvfb@1.2.4": version "1.2.4" @@ -865,34 +874,6 @@ dependencies: any-observable "^0.3.0" -"@types/blob-util@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a" - integrity sha512-4ahcL/QDnpjWA2Qs16ZMQif7HjGP2cw3AGjHabybjw7Vm1EKu+cfQN1D78BaZbS1WJNa1opSMF5HNMztx7lR0w== - -"@types/bluebird@3.5.29": - version "3.5.29" - resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.29.tgz#7cd933c902c4fc83046517a1bef973886d00bdb6" - integrity sha512-kmVtnxTuUuhCET669irqQmPAez4KFnFVKvpleVRyfC3g+SHD1hIkFZcWLim9BVcwUBLO59o8VZE4yGCmTif8Yw== - -"@types/chai-jquery@1.1.40": - version "1.1.40" - resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.40.tgz#445bedcbbb2ae4e3027f46fa2c1733c43481ffa1" - integrity sha512-mCNEZ3GKP7T7kftKeIs7QmfZZQM7hslGSpYzKbOlR2a2HCFf9ph4nlMRA9UnuOETeOQYJVhJQK7MwGqNZVyUtQ== - dependencies: - "@types/chai" "*" - "@types/jquery" "*" - -"@types/chai@*": - version "4.2.11" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" - integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== - -"@types/chai@4.2.7": - version "4.2.7" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.7.tgz#1c8c25cbf6e59ffa7d6b9652c78e547d9a41692d" - integrity sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g== - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -903,71 +884,22 @@ resolved "https://registry.yarnpkg.com/@types/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-1.14.1.tgz#9787f4e89553ebc6359ce157a26ad51ed14aa98b" integrity sha512-CpYsiQ49UrOmadhFg0G5RkokPUmGGctD01mOWjNxFxHw5VgIRv33L2RyFHL8klaAI4HaedGN3Tcj4HTQ65hn+A== -"@types/jquery@*": - version "3.3.38" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.38.tgz#6385f1e1b30bd2bff55ae8ee75ea42a999cc3608" - integrity sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA== - dependencies: - "@types/sizzle" "*" - -"@types/jquery@3.3.31": - version "3.3.31" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.31.tgz#27c706e4bf488474e1cb54a71d8303f37c93451b" - integrity sha512-Lz4BAJihoFw5nRzKvg4nawXPzutkv7wmfQ5121avptaSIXlDNJCUuxZxX/G+9EVidZGuO0UBlk+YjKbwRKJigg== - dependencies: - "@types/sizzle" "*" - -"@types/lodash@4.14.149": - version "4.14.149" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" - integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== - -"@types/minimatch@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/mocha@5.2.7": - version "5.2.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" - integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== - -"@types/node@^14.0.1": - version "14.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" - integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== +"@types/node@^14.0.14": + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== "@types/retry@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/sinon-chai@3.2.3": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.3.tgz#afe392303dda95cc8069685d1e537ff434fa506e" - integrity sha512-TOUFS6vqS0PVL1I8NGVSNcFaNJtFoyZPXZ5zur+qlhDfOmQECZZM4H4kKgca6O8L+QceX/ymODZASfUfn+y4yQ== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - -"@types/sinon@*": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.0.tgz#5b70a360f55645dd64f205defd2a31b749a59799" - integrity sha512-v2TkYHkts4VXshMkcmot/H+ERZ2SevKa10saGaJPGCJ8vh3lKrC4u663zYEeRZxep+VbG6YRDtQ6gVqw9dYzPA== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinon@7.5.1": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.1.tgz#d27b81af0d1cfe1f9b24eebe7a24f74ae40f5b7c" - integrity sha512-EZQUP3hSZQyTQRfiLqelC9NMWd1kqLcmQE0dMiklxBkgi84T+cHOhnKpgk4NnOWpGX863yE6+IaGnOXUNFqDnQ== - -"@types/sinonjs__fake-timers@*": +"@types/sinonjs__fake-timers@6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== -"@types/sizzle@*", "@types/sizzle@2.3.2": +"@types/sizzle@2.3.2": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== @@ -1262,10 +1194,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" - integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== +arch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" + integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== argparse@^1.0.7: version "1.0.10" @@ -1347,7 +1279,7 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async@^3.1.0: +async@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== @@ -2046,10 +1978,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" - integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== +commander@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: version "2.20.3" @@ -2141,6 +2073,11 @@ core-js-compat@^3.1.1: browserslist "^4.8.3" semver "7.0.0" +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + core-js@^2.4.0: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" @@ -2278,10 +2215,10 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress-cucumber-preprocessor@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-2.3.1.tgz#dc9dee8d59d3c787c5c70fc4271c32e95575b083" - integrity sha512-cKa7/VsOthzvdSQSdFiLwSWtBrtDE2q/qAPDL6NWOF4Tqm/AWvvOv18b9l9Z1t4SpphezR7RGnG1QIU45y9PPw== +cypress-cucumber-preprocessor@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-2.5.2.tgz#d544616ece1fb361867e904678d970fe82398b54" + integrity sha512-djQjXmRWUKlA15GxWGhkqaeu1PalWeNrRyxij74QJ2dEp/ozQg35NeVABeWQjgjY2xTE87X6k5iC4y+Sbohe3A== dependencies: "@cypress/browserify-preprocessor" "^2.1.1" chai "^4.1.2" @@ -2297,48 +2234,39 @@ cypress-cucumber-preprocessor@^2.3.1: minimist "^1.2.0" through "^2.3.8" -cypress@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.5.0.tgz#01940d085f6429cec3c87d290daa47bb976a7c7b" - integrity sha512-2A4g5FW5d2fHzq8HKUGAMVTnW6P8nlWYQALiCoGN4bqBLvgwhYM/oG9oKc2CS6LnvgHFiKivKzpm9sfk3uU3zQ== +cypress@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.9.0.tgz#c188a3864ddf841c0fdc81a9e4eff5cf539cd1c1" + integrity sha512-qGxT5E0j21FPryzhb0OBjCdhoR/n1jXtumpFFSBPYWsaZZhNaBvc3XlBUDEZKkkXPsqUFYiyhWdHN/zo0t5FcA== dependencies: "@cypress/listr-verbose-renderer" "0.4.1" "@cypress/request" "2.88.5" "@cypress/xvfb" "1.2.4" - "@types/blob-util" "1.3.3" - "@types/bluebird" "3.5.29" - "@types/chai" "4.2.7" - "@types/chai-jquery" "1.1.40" - "@types/jquery" "3.3.31" - "@types/lodash" "4.14.149" - "@types/minimatch" "3.0.3" - "@types/mocha" "5.2.7" - "@types/sinon" "7.5.1" - "@types/sinon-chai" "3.2.3" + "@types/sinonjs__fake-timers" "6.0.1" "@types/sizzle" "2.3.2" - arch "2.1.1" + arch "2.1.2" bluebird "3.7.2" cachedir "2.3.0" chalk "2.4.2" check-more-types "2.24.0" cli-table3 "0.5.1" - commander "4.1.0" + commander "4.1.1" common-tags "1.8.0" debug "4.1.1" - eventemitter2 "4.1.2" + eventemitter2 "6.4.2" execa "1.0.0" executable "4.1.1" extract-zip "1.7.0" fs-extra "8.1.0" - getos "3.1.4" + getos "3.2.1" is-ci "2.0.0" - is-installed-globally "0.1.0" + is-installed-globally "0.3.2" lazy-ass "1.6.0" listr "0.14.3" lodash "4.17.15" log-symbols "3.0.0" minimist "1.2.5" - moment "2.24.0" + moment "2.26.0" ospath "1.2.2" pretty-bytes "5.3.0" ramda "0.26.1" @@ -2407,6 +2335,13 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" + integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== + dependencies: + xregexp "^4.2.4" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2698,10 +2633,10 @@ esutils@^2.0.0, esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter2@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-4.1.2.tgz#0e1a8477af821a6ef3995b311bf74c23a5247f15" - integrity sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU= +eventemitter2@6.4.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.2.tgz#f31f8b99d45245f0edbc5b00797830ff3b388970" + integrity sha512-r/Pwupa5RIzxIHbEKCkNXqpEQIIT4uQDxmP4G/Lug/NokVUWj0joz/WzWl3OxRpC5kDrH/WdiUJoR+IrwvXJEw== events@^2.0.0: version "2.1.0" @@ -3040,12 +2975,12 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getos@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.4.tgz#29cdf240ed10a70c049add7b6f8cb08c81876faf" - integrity sha512-UORPzguEB/7UG5hqiZai8f0vQ7hzynMQyJLxStoQ8dPGAcmgsfXOPA4iE/fGtweHYkK+z4zc9V0g+CIFRf5HYw== +getos@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== dependencies: - async "^3.1.0" + async "^3.2.0" getpass@^0.1.1: version "0.1.7" @@ -3079,12 +3014,12 @@ glob@^7.0.0, glob@^7.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== dependencies: - ini "^1.3.4" + ini "^1.3.5" globals@^11.1.0: version "11.12.0" @@ -3261,7 +3196,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -3424,13 +3359,13 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-installed-globally@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^2.0.1" + is-path-inside "^3.0.1" is-interactive@^1.0.0: version "1.0.0" @@ -3456,12 +3391,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4031,10 +3964,10 @@ module-deps@^6.0.0: through2 "^2.0.0" xtend "^4.0.0" -moment@2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== +moment@2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" + integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== move-concurrently@^1.0.1: version "1.0.1" @@ -4319,10 +4252,10 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== +p-limit@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.1.tgz#584784ac0722d1aed09f19f90ed2999af6ce2839" + integrity sha512-mw/p92EyOzl2MhauKodw54Rx5ZK4624rNfgNaBguFZkHzyUG9WsDzFF5/yQVEJinbJDdP4jEfMN+uBquiGnaLg== dependencies: p-try "^2.0.0" @@ -4436,11 +4369,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -4711,6 +4639,11 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -5503,10 +5436,10 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -ts-loader@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.4.tgz#5d9b95227de5afb91fdd9668f8920eb193cfe0cc" - integrity sha512-5du6OQHl+4ZjO4crEyoYUyWSrmmo7bAO+inkaILZ68mvahqrfoa4nn0DRmpQ4ruT4l+cuJCgF0xD7SBIyLeeow== +ts-loader@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.5.tgz#789338fb01cb5dc0a33c54e50558b34a73c9c4c5" + integrity sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig== dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0" @@ -5561,10 +5494,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.9.5: - version "3.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36" - integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ== +typescript@3.9.6: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== umd@^3.0.0: version "3.0.3" @@ -5740,10 +5673,10 @@ vm-browserify@^1.0.0, vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -wait-on@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.0.0.tgz#72e554b338490bbc7131362755ca1af04f46d029" - integrity sha512-6v9lttmGGRT7Lr16E/0rISTBIV1DN72n9+77Bpt1iBfzmhBI+75RDlacFe0Q+JizkmwWXmgHUcFG5cgx3Bwqzw== +wait-on@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.0.1.tgz#7dadfe83c36fdf034de996a41aa094af5cf23077" + integrity sha512-TxzkYIfRWK1hLc9IlUh9bE1mrvIIM3ptPRKQ86Z8Qo0tBQLCHEvWzkRD1Ge4FWprKflHOnAtqIBH2nKmib/lrg== dependencies: "@hapi/joi" "^17.1.1" axios "^0.19.2" @@ -5858,6 +5791,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +xregexp@^4.2.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -5878,21 +5818,21 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== +yargs@^15.4.0: + version "15.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2" + integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw== dependencies: cliui "^6.0.0" - decamelize "^1.2.0" + decamelize "^3.2.0" find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -5901,7 +5841,7 @@ yargs@^15.3.1: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.1" + yargs-parser "^18.1.2" yauzl@2.10.0, yauzl@^2.10.0: version "2.10.0" From 0673dbde1f6f582599c46db7cb5718c24f725181 Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Mon, 6 Jul 2020 10:23:20 -0400 Subject: [PATCH 53/59] Feature Controls: addressing bugs for enterprise search (#70538) Co-authored-by: Elastic Machine --- .../feature_table/feature_table.test.tsx | 39 +++++++++++++++++++ .../kibana/feature_table/feature_table.tsx | 4 +- .../disable_ui_capabilities.test.ts | 4 +- .../authorization/disable_ui_capabilities.ts | 6 ++- .../capabilities_switcher.test.ts | 4 +- .../capabilities/capabilities_switcher.ts | 6 +++ 6 files changed, 59 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx index 6bc829f766e58..2a0922d614f1d 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx @@ -846,4 +846,43 @@ describe('FeatureTable', () => { }, }); }); + + it('does not render features which lack privileges', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: {}, + }, + ]); + + const featureWithoutPrivileges = createFeature({ + id: 'no_privs', + name: 'No Privileges Feature', + privileges: null, + }); + + const { displayedPrivileges } = setup({ + role, + features: [...kibanaFeatures, featureWithoutPrivileges], + privilegeIndex: 0, + calculateDisplayedPrivileges: true, + canCustomizeSubFeaturePrivileges: false, + }); + + expect(displayedPrivileges).toEqual({ + excluded_from_base: { + primaryFeaturePrivilege: 'none', + }, + no_sub_features: { + primaryFeaturePrivilege: 'none', + }, + with_excluded_sub_features: { + primaryFeaturePrivilege: 'none', + }, + with_sub_features: { + primaryFeaturePrivilege: 'none', + }, + }); + }); }); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx index a371a9ec9ba1e..57e24f2838226 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx @@ -63,7 +63,9 @@ export class FeatureTable extends Component { public render() { const { role, kibanaPrivileges } = this.props; - const featurePrivileges = kibanaPrivileges.getSecuredFeatures(); + const featurePrivileges = kibanaPrivileges + .getSecuredFeatures() + .filter((feature) => feature.privileges != null || feature.reserved != null); const items: TableRow[] = featurePrivileges .sort((feature1, feature2) => { diff --git a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.test.ts b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.test.ts index a1bedea9f7deb..45f55b34baf96 100644 --- a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.test.ts +++ b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.test.ts @@ -50,7 +50,7 @@ describe('usingPrivileges', () => { new Feature({ id: 'fooFeature', name: 'Foo Feature', - app: [], + app: ['fooApp'], navLinkId: 'foo', privileges: null, }), @@ -63,6 +63,7 @@ describe('usingPrivileges', () => { Object.freeze({ navLinks: { foo: true, + fooApp: true, bar: true, }, management: { @@ -85,6 +86,7 @@ describe('usingPrivileges', () => { expect(result).toEqual({ navLinks: { foo: false, + fooApp: false, bar: true, }, management: { diff --git a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts index 183ad9169a123..a9b3fa54d3617 100644 --- a/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts +++ b/x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts @@ -18,8 +18,12 @@ export function disableUICapabilitiesFactory( logger: Logger, authz: AuthorizationServiceSetup ) { + // nav links are sourced from two places: + // 1) The `navLinkId` property. This is deprecated and will be removed (https://github.com/elastic/kibana/issues/66217) + // 2) The apps property. The Kibana Platform associates nav links to the app which registers it, in a 1:1 relationship. + // This behavior is replacing the `navLinkId` property above. const featureNavLinkIds = features - .map((feature) => feature.navLinkId) + .flatMap((feature) => [feature.navLinkId, ...feature.app]) .filter((navLinkId) => navLinkId != null); const shouldDisableFeatureUICapability = ( diff --git a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts index 1e01e04332f43..babd25dd3ec4b 100644 --- a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts +++ b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.test.ts @@ -43,7 +43,7 @@ const features = ([ id: 'feature_3', name: 'Feature 3', navLinkId: 'feature3', - app: [], + app: ['feature3_app'], catalogue: ['feature3Entry'], management: { kibana: ['indices'], @@ -67,6 +67,7 @@ const buildCapabilities = () => feature1: true, feature2: true, feature3: true, + feature3_app: true, unknownFeature: true, }, catalogue: { @@ -241,6 +242,7 @@ describe('capabilitiesSwitcher', () => { expectedCapabilities.feature_2.foo = false; expectedCapabilities.navLinks.feature3 = false; + expectedCapabilities.navLinks.feature3_app = false; expectedCapabilities.catalogue.feature3Entry = false; expectedCapabilities.management.kibana.indices = false; expectedCapabilities.feature_3.bar = false; diff --git a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts index a0cdd5ad0e931..05d0429596489 100644 --- a/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts +++ b/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts @@ -68,6 +68,12 @@ function toggleDisabledFeatures( navLinks[feature.navLinkId] = false; } + feature.app.forEach((app) => { + if (navLinks.hasOwnProperty(app)) { + navLinks[app] = false; + } + }); + // Disable associated catalogue entries const privilegeCatalogueEntries = feature.catalogue || []; privilegeCatalogueEntries.forEach((catalogueEntryId) => { From e0d3022dc9e3018eb85482fb41132483a4bb36fa Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 6 Jul 2020 15:56:01 +0100 Subject: [PATCH 54/59] skip flaky suite (#70727) --- .../security_solution/cypress/integration/alerts.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts b/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts index c8c18696359f7..fd52fb6734ef2 100644 --- a/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/alerts.spec.ts @@ -30,7 +30,8 @@ import { loginAndWaitForPage } from '../tasks/login'; import { ALERTS_URL } from '../urls/navigation'; -describe('Alerts', () => { +// Flaky: https://github.com/elastic/kibana/issues/70727 +describe.skip('Alerts', () => { context('Closing alerts', () => { beforeEach(() => { esArchiverLoad('alerts'); From 3bddc4aba9ea4e939b7e0140a77a13e0b5c5e8cc Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Mon, 6 Jul 2020 16:57:15 +0200 Subject: [PATCH 55/59] [Lens] Improve no data popover styles (#70594) --- .../public/ui/query_string_input/no_data_popover.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/data/public/ui/query_string_input/no_data_popover.tsx b/src/plugins/data/public/ui/query_string_input/no_data_popover.tsx index 302477a5fff5e..561c33519f96f 100644 --- a/src/plugins/data/public/ui/query_string_input/no_data_popover.tsx +++ b/src/plugins/data/public/ui/query_string_input/no_data_popover.tsx @@ -56,7 +56,7 @@ export function NoDataPopover({

{i18n.translate('data.noDataPopover.content', { defaultMessage: - "This time range doesn't contain any data. Increase or adjust the time range to see more fields and create charts", + "This time range doesn't contain any data. Increase or adjust the time range to see more fields and create charts.", })}

@@ -66,11 +66,13 @@ export function NoDataPopover({ step={1} stepsTotal={1} isStepOpen={noDataPopoverVisible} - subtitle={i18n.translate('data.noDataPopover.title', { defaultMessage: 'Tip' })} - title="" + subtitle={i18n.translate('data.noDataPopover.subtitle', { defaultMessage: 'Tip' })} + title={i18n.translate('data.noDataPopover.title', { defaultMessage: 'Empty dataset' })} footerAction={ { storage.set(NO_DATA_POPOVER_STORAGE_KEY, true); From 81bd66dcfd1c737b12b8968b8bbc27dcbe3e7bf7 Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Mon, 6 Jul 2020 10:58:54 -0400 Subject: [PATCH 56/59] [Rollups] Make telemetry code more resilient (#70152) --- .../rollup/server/collectors/register.ts | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/x-pack/plugins/rollup/server/collectors/register.ts b/x-pack/plugins/rollup/server/collectors/register.ts index 35c40e42efc19..aa06d3f696d00 100644 --- a/x-pack/plugins/rollup/server/collectors/register.ts +++ b/x-pack/plugins/rollup/server/collectors/register.ts @@ -137,27 +137,30 @@ async function fetchRollupVisualizations( let rollupVisualizationsFromSavedSearches = 0; visualizations.forEach((visualization: any) => { - const { - _source: { - visualization: { - savedSearchRefName, - kibanaSavedObjectMeta: { searchSourceJSON }, - }, - references = [] as any[], - }, - } = visualization; - - const searchSource = JSON.parse(searchSourceJSON); - - if (savedSearchRefName) { + const references: Array<{ name: string; id: string }> | undefined = get( + visualization, + '_source.references' + ); + const savedSearchRefName: string | undefined = get( + visualization, + '_source.visualization.savedSearchRefName' + ); + const searchSourceJSON: string | undefined = get( + visualization, + '_source.visualization.kibanaSavedObjectMeta.searchSourceJSON' + ); + + if (savedSearchRefName && references?.length) { // This visualization depends upon a saved search. - const savedSearch = references.find((ref: any) => ref.name === savedSearchRefName); - if (rollupSavedSearchesToFlagMap[savedSearch.id]) { + const savedSearch = references.find(({ name }) => name === savedSearchRefName); + if (savedSearch && rollupSavedSearchesToFlagMap[savedSearch.id]) { rollupVisualizations++; rollupVisualizationsFromSavedSearches++; } - } else { + } else if (searchSourceJSON) { // This visualization depends upon an index pattern. + const searchSource = JSON.parse(searchSourceJSON); + if (rollupIndexPatternToFlagMap[searchSource.index]) { rollupVisualizations++; } From b172b5b7773977065c64878acb461c49ff807064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez?= Date: Mon, 6 Jul 2020 17:04:23 +0200 Subject: [PATCH 57/59] [Logs UI] move ML job setup UI to a flyout (#68366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Felix Stürmer Co-authored-by: Elastic Machine --- .../infra/common/log_analysis/log_analysis.ts | 2 +- .../log_analysis_module_status.tsx | 2 +- .../log_entry_categories/page_content.tsx | 34 ++++- .../page_results_content.tsx | 29 +++- .../page_setup_content.tsx | 93 ++++--------- .../log_entry_categories/setup_flyout.tsx | 129 ++++++++++++++++++ .../logs/log_entry_rate/page_content.tsx | 34 ++++- .../log_entry_rate/page_results_content.tsx | 29 +++- .../log_entry_rate/page_setup_content.tsx | 95 ++++--------- .../logs/log_entry_rate/setup_flyout.tsx | 129 ++++++++++++++++++ .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - 12 files changed, 411 insertions(+), 169 deletions(-) create mode 100644 x-pack/plugins/infra/public/pages/logs/log_entry_categories/setup_flyout.tsx create mode 100644 x-pack/plugins/infra/public/pages/logs/log_entry_rate/setup_flyout.tsx diff --git a/x-pack/plugins/infra/common/log_analysis/log_analysis.ts b/x-pack/plugins/infra/common/log_analysis/log_analysis.ts index f0aa2067a24c2..b8fba7a14e243 100644 --- a/x-pack/plugins/infra/common/log_analysis/log_analysis.ts +++ b/x-pack/plugins/infra/common/log_analysis/log_analysis.ts @@ -35,7 +35,7 @@ export type SetupStatus = | { type: 'skipped'; newlyCreated?: boolean; - }; // setup is hidden + }; // setup is not necessary /** * Maps a job status to the possibility that results have already been produced diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_status.tsx b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_status.tsx index 10205e9684ef2..a0046b630bfe1 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_status.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_status.tsx @@ -252,7 +252,7 @@ const getSetupStatus = (everyJobStatus: Record(everyJobStatus).reduce((setupStatus, [, jobStatus]) => { if (jobStatus === 'missing') { return { type: 'required', reason: 'missing' }; - } else if (setupStatus.type === 'required') { + } else if (setupStatus.type === 'required' || setupStatus.type === 'succeeded') { return setupStatus; } else if (setupStatus.type === 'skipped' || isJobStatusWithResults(jobStatus)) { return { diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_content.tsx index 5d9adb8a4f6ec..26633cd190a07 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_content.tsx @@ -5,8 +5,8 @@ */ import { i18n } from '@kbn/i18n'; -import React, { useEffect } from 'react'; -import { isSetupStatusWithResults } from '../../../../common/log_analysis'; +import React, { useEffect, useState, useCallback } from 'react'; +import { isJobStatusWithResults } from '../../../../common/log_analysis'; import { LoadingPage } from '../../../components/loading_page'; import { LogAnalysisSetupStatusUnknownPrompt, @@ -21,6 +21,7 @@ import { useLogSourceContext } from '../../../containers/logs/log_source'; import { LogEntryCategoriesResultsContent } from './page_results_content'; import { LogEntryCategoriesSetupContent } from './page_setup_content'; import { useLogEntryCategoriesModuleContext } from './use_log_entry_categories_module'; +import { LogEntryCategoriesSetupFlyout } from './setup_flyout'; export const LogEntryCategoriesPageContent = () => { const { @@ -37,7 +38,11 @@ export const LogEntryCategoriesPageContent = () => { hasLogAnalysisSetupCapabilities, } = useLogAnalysisCapabilitiesContext(); - const { fetchJobStatus, setupStatus } = useLogEntryCategoriesModuleContext(); + const { fetchJobStatus, setupStatus, jobStatus } = useLogEntryCategoriesModuleContext(); + + const [isFlyoutOpen, setIsFlyoutOpen] = useState(false); + const openFlyout = useCallback(() => setIsFlyoutOpen(true), []); + const closeFlyout = useCallback(() => setIsFlyoutOpen(false), []); useEffect(() => { if (hasLogAnalysisReadCapabilities) { @@ -45,6 +50,13 @@ export const LogEntryCategoriesPageContent = () => { } }, [fetchJobStatus, hasLogAnalysisReadCapabilities]); + // Open flyout if there are no ML jobs + useEffect(() => { + if (setupStatus.type === 'required' && setupStatus.reason === 'missing') { + openFlyout(); + } + }, [setupStatus, openFlyout]); + if (isLoading || isUninitialized) { return ; } else if (hasFailedLoadingSource) { @@ -63,11 +75,21 @@ export const LogEntryCategoriesPageContent = () => { ); } else if (setupStatus.type === 'unknown') { return ; - } else if (isSetupStatusWithResults(setupStatus)) { - return ; + } else if (isJobStatusWithResults(jobStatus['log-entry-categories-count'])) { + return ( + <> + + + + ); } else if (!hasLogAnalysisSetupCapabilities) { return ; } else { - return ; + return ( + <> + + + + ); } }; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_results_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_results_content.tsx index a00351551e2d7..b4c044fe1cfcb 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_results_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_results_content.tsx @@ -24,7 +24,13 @@ import { const JOB_STATUS_POLLING_INTERVAL = 30000; -export const LogEntryCategoriesResultsContent: React.FunctionComponent = () => { +interface LogEntryCategoriesResultsContentProps { + onOpenSetup: () => void; +} + +export const LogEntryCategoriesResultsContent: React.FunctionComponent = ({ + onOpenSetup, +}) => { useTrackPageview({ app: 'infra_logs', path: 'log_entry_categories_results' }); useTrackPageview({ app: 'infra_logs', path: 'log_entry_categories_results', delay: 15000 }); @@ -123,12 +129,25 @@ export const LogEntryCategoriesResultsContent: React.FunctionComponent = () => { [setAutoRefresh] ); + const viewSetupFlyoutForReconfiguration = useCallback(() => { + viewSetupForReconfiguration(); + onOpenSetup(); + }, [onOpenSetup, viewSetupForReconfiguration]); + + const viewSetupFlyoutForUpdate = useCallback(() => { + viewSetupForUpdate(); + onOpenSetup(); + }, [onOpenSetup, viewSetupForUpdate]); + const hasResults = useMemo(() => topLogEntryCategories.length > 0, [ topLogEntryCategories.length, ]); const isFirstUse = useMemo( - () => setupStatus.type === 'skipped' && !!setupStatus.newlyCreated && !hasResults, + () => + ((setupStatus.type === 'skipped' && !!setupStatus.newlyCreated) || + setupStatus.type === 'succeeded') && + !hasResults, [hasResults, setupStatus] ); @@ -184,8 +203,8 @@ export const LogEntryCategoriesResultsContent: React.FunctionComponent = () => { hasOutdatedJobDefinitions={hasOutdatedJobDefinitions} hasStoppedJobs={hasStoppedJobs} isFirstUse={isFirstUse} - onRecreateMlJobForReconfiguration={viewSetupForReconfiguration} - onRecreateMlJobForUpdate={viewSetupForUpdate} + onRecreateMlJobForReconfiguration={viewSetupFlyoutForReconfiguration} + onRecreateMlJobForUpdate={viewSetupFlyoutForUpdate} qualityWarnings={categoryQualityWarnings} /> @@ -197,7 +216,7 @@ export const LogEntryCategoriesResultsContent: React.FunctionComponent = () => { isLoadingTopCategories={isLoadingTopLogEntryCategories} jobId={jobIds['log-entry-categories-count']} onChangeDatasetSelection={setCategoryQueryDatasets} - onRequestRecreateMlJob={viewSetupForReconfiguration} + onRequestRecreateMlJob={viewSetupFlyoutForReconfiguration} selectedDatasets={categoryQueryDatasets} sourceId={sourceId} timeRange={categoryQueryTimeRange.timeRange} diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_setup_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_setup_content.tsx index 7ae38234ae221..8d5d8a42200e6 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_setup_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/page_setup_content.tsx @@ -4,98 +4,51 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiSpacer, EuiSteps, EuiText } from '@elastic/eui'; +import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import React, { useMemo } from 'react'; +import { EuiText, EuiButton, EuiSpacer } from '@elastic/eui'; -import { BetaBadge } from '../../../components/beta_badge'; import { - createInitialConfigurationStep, - createProcessStep, LogAnalysisSetupPage, LogAnalysisSetupPageContent, LogAnalysisSetupPageHeader, } from '../../../components/logging/log_analysis_setup'; import { useTrackPageview } from '../../../../../observability/public'; -import { useLogEntryCategoriesSetup } from './use_log_entry_categories_setup'; -export const LogEntryCategoriesSetupContent: React.FunctionComponent = () => { +interface LogEntryCategoriesSetupContentProps { + onOpenSetup: () => void; +} + +export const LogEntryCategoriesSetupContent: React.FunctionComponent = ({ + onOpenSetup, +}) => { useTrackPageview({ app: 'infra_logs', path: 'log_entry_categories_setup' }); useTrackPageview({ app: 'infra_logs', path: 'log_entry_categories_setup', delay: 15000 }); - const { - cleanUpAndSetUp, - endTime, - isValidating, - lastSetupErrorMessages, - setEndTime, - setStartTime, - setValidatedIndices, - setUp, - setupStatus, - startTime, - validatedIndices, - validationErrors, - viewResults, - } = useLogEntryCategoriesSetup(); - - const steps = useMemo( - () => [ - createInitialConfigurationStep({ - setStartTime, - setEndTime, - startTime, - endTime, - isValidating, - validatedIndices, - setupStatus, - setValidatedIndices, - validationErrors, - }), - createProcessStep({ - cleanUpAndSetUp, - errorMessages: lastSetupErrorMessages, - isConfigurationValid: validationErrors.length <= 0 && !isValidating, - setUp, - setupStatus, - viewResults, - }), - ], - [ - cleanUpAndSetUp, - endTime, - isValidating, - lastSetupErrorMessages, - setEndTime, - setStartTime, - setUp, - setValidatedIndices, - setupStatus, - startTime, - validatedIndices, - validationErrors, - viewResults, - ] - ); - return ( {' '} - + defaultMessage="Set up log category analysis" + /> - +

+ +

- + + +
); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/setup_flyout.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/setup_flyout.tsx new file mode 100644 index 0000000000000..ab5eae1ab3004 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/setup_flyout.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useMemo, useCallback } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiFlyout, + EuiFlyoutHeader, + EuiFlyoutBody, + EuiTitle, + EuiText, + EuiSpacer, + EuiSteps, +} from '@elastic/eui'; + +import { + createInitialConfigurationStep, + createProcessStep, +} from '../../../components/logging/log_analysis_setup'; +import { useLogEntryCategoriesSetup } from './use_log_entry_categories_setup'; + +interface LogEntryCategoriesSetupFlyoutProps { + isOpen: boolean; + onClose: () => void; +} + +export const LogEntryCategoriesSetupFlyout: React.FC = ({ + isOpen, + onClose, +}) => { + const { + cleanUpAndSetUp, + endTime, + isValidating, + lastSetupErrorMessages, + setEndTime, + setStartTime, + setValidatedIndices, + setUp, + setupStatus, + startTime, + validatedIndices, + validationErrors, + viewResults, + } = useLogEntryCategoriesSetup(); + + const viewResultsAndClose = useCallback(() => { + viewResults(); + onClose(); + }, [viewResults, onClose]); + + const steps = useMemo( + () => [ + createInitialConfigurationStep({ + setStartTime, + setEndTime, + startTime, + endTime, + isValidating, + validatedIndices, + setupStatus, + setValidatedIndices, + validationErrors, + }), + createProcessStep({ + cleanUpAndSetUp, + errorMessages: lastSetupErrorMessages, + isConfigurationValid: validationErrors.length <= 0 && !isValidating, + setUp, + setupStatus, + viewResults: viewResultsAndClose, + }), + ], + [ + cleanUpAndSetUp, + endTime, + isValidating, + lastSetupErrorMessages, + setEndTime, + setStartTime, + setUp, + setValidatedIndices, + setupStatus, + startTime, + validatedIndices, + validationErrors, + viewResultsAndClose, + ] + ); + + if (!isOpen) { + return null; + } + return ( + + + +

+ +

+
+
+ + +

+ +

+
+ + + + + +
+
+ ); +}; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx index 4ec05a9778512..012b694bdbd25 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx @@ -5,8 +5,8 @@ */ import { i18n } from '@kbn/i18n'; -import React, { useEffect } from 'react'; -import { isSetupStatusWithResults } from '../../../../common/log_analysis'; +import React, { useEffect, useState, useCallback } from 'react'; +import { isJobStatusWithResults } from '../../../../common/log_analysis'; import { LoadingPage } from '../../../components/loading_page'; import { LogAnalysisSetupStatusUnknownPrompt, @@ -21,6 +21,7 @@ import { useLogSourceContext } from '../../../containers/logs/log_source'; import { LogEntryRateResultsContent } from './page_results_content'; import { LogEntryRateSetupContent } from './page_setup_content'; import { useLogEntryRateModuleContext } from './use_log_entry_rate_module'; +import { LogEntryRateSetupFlyout } from './setup_flyout'; export const LogEntryRatePageContent = () => { const { @@ -37,7 +38,11 @@ export const LogEntryRatePageContent = () => { hasLogAnalysisSetupCapabilities, } = useLogAnalysisCapabilitiesContext(); - const { fetchJobStatus, setupStatus } = useLogEntryRateModuleContext(); + const { fetchJobStatus, setupStatus, jobStatus } = useLogEntryRateModuleContext(); + + const [isFlyoutOpen, setIsFlyoutOpen] = useState(false); + const openFlyout = useCallback(() => setIsFlyoutOpen(true), []); + const closeFlyout = useCallback(() => setIsFlyoutOpen(false), []); useEffect(() => { if (hasLogAnalysisReadCapabilities) { @@ -45,6 +50,13 @@ export const LogEntryRatePageContent = () => { } }, [fetchJobStatus, hasLogAnalysisReadCapabilities]); + // Open flyout if there are no ML jobs + useEffect(() => { + if (setupStatus.type === 'required' && setupStatus.reason === 'missing') { + openFlyout(); + } + }, [setupStatus, openFlyout]); + if (isLoading || isUninitialized) { return ; } else if (hasFailedLoadingSource) { @@ -63,11 +75,21 @@ export const LogEntryRatePageContent = () => { ); } else if (setupStatus.type === 'unknown') { return ; - } else if (isSetupStatusWithResults(setupStatus)) { - return ; + } else if (isJobStatusWithResults(jobStatus['log-entry-rate'])) { + return ( + <> + + + + ); } else if (!hasLogAnalysisSetupCapabilities) { return ; } else { - return ; + return ( + <> + + + + ); } }; diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx index 3c8db3f8246c0..bf4dbcd87cc41 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx @@ -36,7 +36,13 @@ import { const JOB_STATUS_POLLING_INTERVAL = 30000; -export const LogEntryRateResultsContent: React.FunctionComponent = () => { +interface LogEntryRateResultsContentProps { + onOpenSetup: () => void; +} + +export const LogEntryRateResultsContent: React.FunctionComponent = ({ + onOpenSetup, +}) => { useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_results' }); useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_results', delay: 15000 }); @@ -127,13 +133,26 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => { [setAutoRefresh] ); + const viewSetupFlyoutForReconfiguration = useCallback(() => { + viewSetupForReconfiguration(); + onOpenSetup(); + }, [viewSetupForReconfiguration, onOpenSetup]); + + const viewSetupFlyoutForUpdate = useCallback(() => { + viewSetupForUpdate(); + onOpenSetup(); + }, [viewSetupForUpdate, onOpenSetup]); + /* eslint-disable-next-line react-hooks/exhaustive-deps */ const hasResults = useMemo(() => (logEntryRate?.histogramBuckets?.length ?? 0) > 0, [ logEntryRate, ]); const isFirstUse = useMemo( - () => setupStatus.type === 'skipped' && !!setupStatus.newlyCreated && !hasResults, + () => + ((setupStatus.type === 'skipped' && !!setupStatus.newlyCreated) || + setupStatus.type === 'succeeded') && + !hasResults, [hasResults, setupStatus] ); @@ -209,8 +228,8 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => { hasOutdatedJobDefinitions={hasOutdatedJobDefinitions} hasStoppedJobs={hasStoppedJobs} isFirstUse={isFirstUse} - onRecreateMlJobForReconfiguration={viewSetupForReconfiguration} - onRecreateMlJobForUpdate={viewSetupForUpdate} + onRecreateMlJobForReconfiguration={viewSetupFlyoutForReconfiguration} + onRecreateMlJobForUpdate={viewSetupFlyoutForUpdate} /> @@ -227,7 +246,7 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => { { +interface LogEntryRateSetupContentProps { + onOpenSetup: () => void; +} + +export const LogEntryRateSetupContent: React.FunctionComponent = ({ + onOpenSetup, +}) => { useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_setup' }); useTrackPageview({ app: 'infra_logs', path: 'log_entry_rate_setup', delay: 15000 }); - const { - cleanUpAndSetUp, - endTime, - isValidating, - lastSetupErrorMessages, - setEndTime, - setStartTime, - setValidatedIndices, - setUp, - setupStatus, - startTime, - validatedIndices, - validationErrors, - viewResults, - } = useLogEntryRateSetup(); - - const steps = useMemo( - () => [ - createInitialConfigurationStep({ - setStartTime, - setEndTime, - startTime, - endTime, - isValidating, - validatedIndices, - setupStatus, - setValidatedIndices, - validationErrors, - }), - createProcessStep({ - cleanUpAndSetUp, - errorMessages: lastSetupErrorMessages, - isConfigurationValid: validationErrors.length <= 0 && !isValidating, - setUp, - setupStatus, - viewResults, - }), - ], - [ - cleanUpAndSetUp, - endTime, - isValidating, - lastSetupErrorMessages, - setEndTime, - setStartTime, - setUp, - setValidatedIndices, - setupStatus, - startTime, - validatedIndices, - validationErrors, - viewResults, - ] - ); - return ( {' '} - + id="xpack.infra.logs.logEntryRate.setupTitle" + defaultMessage="Set up log anomaly analysis" + /> - +

+ +

- + + +
); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/setup_flyout.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/setup_flyout.tsx new file mode 100644 index 0000000000000..0e9e34432f28b --- /dev/null +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/setup_flyout.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useMemo, useCallback } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiFlyout, + EuiFlyoutHeader, + EuiFlyoutBody, + EuiTitle, + EuiText, + EuiSpacer, + EuiSteps, +} from '@elastic/eui'; + +import { + createInitialConfigurationStep, + createProcessStep, +} from '../../../components/logging/log_analysis_setup'; +import { useLogEntryRateSetup } from './use_log_entry_rate_setup'; + +interface LogEntryRateSetupFlyoutProps { + isOpen: boolean; + onClose: () => void; +} + +export const LogEntryRateSetupFlyout: React.FC = ({ + isOpen, + onClose, +}) => { + const { + cleanUpAndSetUp, + endTime, + isValidating, + lastSetupErrorMessages, + setEndTime, + setStartTime, + setValidatedIndices, + setUp, + setupStatus, + startTime, + validatedIndices, + validationErrors, + viewResults, + } = useLogEntryRateSetup(); + + const viewResultsAndClose = useCallback(() => { + viewResults(); + onClose(); + }, [viewResults, onClose]); + + const steps = useMemo( + () => [ + createInitialConfigurationStep({ + setStartTime, + setEndTime, + startTime, + endTime, + isValidating, + validatedIndices, + setupStatus, + setValidatedIndices, + validationErrors, + }), + createProcessStep({ + cleanUpAndSetUp, + errorMessages: lastSetupErrorMessages, + isConfigurationValid: validationErrors.length <= 0 && !isValidating, + setUp, + setupStatus, + viewResults: viewResultsAndClose, + }), + ], + [ + cleanUpAndSetUp, + endTime, + isValidating, + lastSetupErrorMessages, + setEndTime, + setStartTime, + setUp, + setValidatedIndices, + setupStatus, + startTime, + validatedIndices, + validationErrors, + viewResultsAndClose, + ] + ); + + if (!isOpen) { + return null; + } + return ( + + + +

+ +

+
+
+ + +

+ +

+
+ + + + + +
+
+ ); +}; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 683d83dde4e0f..51c6b33579f50 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7316,8 +7316,6 @@ "xpack.infra.alerting.logs.manageAlerts": "アラートを管理", "xpack.infra.alerting.manageAlerts": "アラートを管理", "xpack.infra.analysisSetup.actionStepTitle": "MLジョブを作成", - "xpack.infra.analysisSetup.analysisSetupDescription": "機械学習を使用して自動的に異常ログレートカウントを検出します。", - "xpack.infra.analysisSetup.analysisSetupTitle": "機械学習分析を有効にする", "xpack.infra.analysisSetup.configurationStepTitle": "構成", "xpack.infra.analysisSetup.createMlJobButton": "ML ジョブを作成", "xpack.infra.analysisSetup.deleteAnalysisResultsWarning": "これにより以前検出された異常が削除されます。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ca065c9523637..8121df6d05090 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7320,8 +7320,6 @@ "xpack.infra.alerting.logs.manageAlerts": "管理告警", "xpack.infra.alerting.manageAlerts": "管理告警", "xpack.infra.analysisSetup.actionStepTitle": "创建 ML 作业", - "xpack.infra.analysisSetup.analysisSetupDescription": "使用 Machine Learning 自动检测异常日志速率计数。", - "xpack.infra.analysisSetup.analysisSetupTitle": "启用 Machine Learning 分析", "xpack.infra.analysisSetup.configurationStepTitle": "配置", "xpack.infra.analysisSetup.createMlJobButton": "创建 ML 作业", "xpack.infra.analysisSetup.deleteAnalysisResultsWarning": "这将移除以前检测到的异常。", From 353f33297b12b6f89effce7926102d3c2b4fb546 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Mon, 6 Jul 2020 17:09:30 +0200 Subject: [PATCH 58/59] [Uptime] Fix detail page down monitor location badge text color (#70778) --- .../availability_reporting.test.tsx.snap | 21 ++++--- .../location_status_tags.test.tsx.snap | 57 ++++++++++--------- .../__snapshots__/tag_label.test.tsx.snap | 12 ++-- .../__tests__/availability_reporting.test.tsx | 10 +++- .../__tests__/tag_label.test.tsx | 4 +- .../availability_reporting.tsx | 2 +- .../location_status_tags.tsx | 6 +- .../availability_reporting/tag_label.tsx | 14 ++--- .../location_map/embeddables/map_tool_tip.tsx | 4 +- 9 files changed, 71 insertions(+), 59 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/availability_reporting.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/availability_reporting.test.tsx.snap index 9496274a69171..823346db3518a 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/availability_reporting.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/availability_reporting.test.tsx.snap @@ -111,13 +111,13 @@ Array [ -

au-heartbeat

-
+
@@ -188,13 +188,13 @@ Array [ -

nyc-heartbeat

-
+
@@ -265,13 +265,13 @@ Array [ -

spa-heartbeat

-
+
@@ -356,18 +356,21 @@ exports[`AvailabilityReporting component shallow renders correctly against snaps "availability": 100, "color": "#d3dae6", "label": "au-heartbeat", + "status": "up", "timestamp": "36m ago", }, Object { "availability": 100, "color": "#d3dae6", "label": "nyc-heartbeat", + "status": "down", "timestamp": "36m ago", }, Object { "availability": 100, "color": "#d3dae6", "label": "spa-heartbeat", + "status": "down", "timestamp": "36m ago", }, ] diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/location_status_tags.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/location_status_tags.test.tsx.snap index 05e0b50a86f35..4d3e85ba18ebe 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/location_status_tags.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/location_status_tags.test.tsx.snap @@ -10,18 +10,21 @@ exports[`LocationStatusTags component renders properly against props 1`] = ` "availability": 100, "color": "#d3dae6", "label": "Berlin", + "status": "up", "timestamp": "1 Mon ago", }, Object { "availability": 100, "color": "#bd271e", "label": "Berlin", + "status": "down", "timestamp": "1 Mon ago", }, Object { "availability": 100, "color": "#d3dae6", "label": "Islamabad", + "status": "up", "timestamp": "1 Mon ago", }, ] @@ -145,13 +148,13 @@ exports[`LocationStatusTags component renders when all locations are down 1`] = -

Berlin

-
+
@@ -222,13 +225,13 @@ exports[`LocationStatusTags component renders when all locations are down 1`] = -

Islamabad

-
+
@@ -393,13 +396,13 @@ exports[`LocationStatusTags component renders when all locations are up 1`] = ` -

Berlin

-
+
@@ -470,13 +473,13 @@ exports[`LocationStatusTags component renders when all locations are up 1`] = ` -

Islamabad

-
+
@@ -641,13 +644,13 @@ exports[`LocationStatusTags component renders when there are many location 1`] = -

Berlin

-
+
@@ -718,13 +721,13 @@ exports[`LocationStatusTags component renders when there are many location 1`] = -

Islamabad

-
+
@@ -795,13 +798,13 @@ exports[`LocationStatusTags component renders when there are many location 1`] = -

New York

-
+
@@ -872,13 +875,13 @@ exports[`LocationStatusTags component renders when there are many location 1`] = -

Paris

-
+
@@ -949,13 +952,13 @@ exports[`LocationStatusTags component renders when there are many location 1`] = -

Sydney

-
+
diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/tag_label.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/tag_label.test.tsx.snap index 3381efa62286b..28f1f433648c8 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/tag_label.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/__snapshots__/tag_label.test.tsx.snap @@ -26,13 +26,13 @@ exports[`TagLabel component renders correctly against snapshot 1`] = ` -

US-East

-
+
@@ -44,13 +44,13 @@ exports[`TagLabel component shallow render correctly against snapshot 1`] = ` -

US-East

-
+
`; diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/availability_reporting.test.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/availability_reporting.test.tsx index de9f6b0d3b30f..b5fe5d17312c6 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/availability_reporting.test.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/availability_reporting.test.tsx @@ -19,14 +19,22 @@ describe('AvailabilityReporting component', () => { timestamp: '36m ago', color: '#d3dae6', availability: 100, + status: 'up', }, { label: 'nyc-heartbeat', timestamp: '36m ago', color: '#d3dae6', availability: 100, + status: 'down', + }, + { + label: 'spa-heartbeat', + timestamp: '36m ago', + color: '#d3dae6', + availability: 100, + status: 'down', }, - { label: 'spa-heartbeat', timestamp: '36m ago', color: '#d3dae6', availability: 100 }, ]; }); diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/tag_label.test.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/tag_label.test.tsx index 3560784122298..8e46196ec3ab7 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/tag_label.test.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/__tests__/tag_label.test.tsx @@ -10,12 +10,12 @@ import { TagLabel } from '../tag_label'; describe('TagLabel component', () => { it('shallow render correctly against snapshot', () => { - const component = shallowWithIntl(); + const component = shallowWithIntl(); expect(component).toMatchSnapshot(); }); it('renders correctly against snapshot', () => { - const component = renderWithIntl(); + const component = renderWithIntl(); expect(component).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/availability_reporting.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/availability_reporting.tsx index 8fed5db5e0271..ccf7d41642bfb 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/availability_reporting.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/availability_reporting.tsx @@ -30,7 +30,7 @@ export const AvailabilityReporting: React.FC = ({ allLocations }) => { name: LocationLabel, truncateText: true, render: (val: string, item: StatusTag) => { - return ; + return ; }, }, { diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/location_status_tags.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/location_status_tags.tsx index 6096499213a10..b48252d4208d2 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/location_status_tags.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/location_status_tags.tsx @@ -24,9 +24,10 @@ interface Props { export interface StatusTag { label: string; - timestamp: string; + timestamp?: string; color: string; - availability: number; + availability?: number; + status: 'up' | 'down'; } export const LocationStatusTags = ({ locations }: Props) => { @@ -48,6 +49,7 @@ export const LocationStatusTags = ({ locations }: Props) => { timestamp: moment(new Date(item.timestamp).valueOf()).fromNow(), color: item.summary.down === 0 ? gray : danger, availability: (item.up_history / (item.up_history + item.down_history)) * 100, + status: item.summary.down === 0 ? 'up' : 'down', }); }); diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/tag_label.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/tag_label.tsx index dbd73fc7d440b..ec5718415595d 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/tag_label.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/availability_reporting/tag_label.tsx @@ -6,7 +6,8 @@ import React from 'react'; import styled from 'styled-components'; -import { EuiBadge, EuiText } from '@elastic/eui'; +import { EuiBadge, EuiTextColor } from '@elastic/eui'; +import { StatusTag } from './location_status_tags'; const BadgeItem = styled.div` white-space: nowrap; @@ -17,18 +18,13 @@ const BadgeItem = styled.div` } `; -interface Props { - color: string; - label: string; -} - -export const TagLabel: React.FC = ({ color, label }) => { +export const TagLabel: React.FC = ({ color, label, status }) => { return ( - +

{label}

-
+
); diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/location_map/embeddables/map_tool_tip.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/location_map/embeddables/map_tool_tip.tsx index bf403846dcec4..8c66b57de58ac 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/location_map/embeddables/map_tool_tip.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/location_map/embeddables/map_tool_tip.tsx @@ -64,9 +64,9 @@ export const MapToolTipComponent = ({ closeTooltip, features = [] }: MapToolTipP <> {layerId === 'up_points' ? ( - + ) : ( - + )} From 3250816d022f547b8fdb33dfcaa44df94846c80a Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 6 Jul 2020 16:13:37 +0100 Subject: [PATCH 59/59] skip flaky suite (#70818) --- .../test/functional/apps/security/doc_level_security_roles.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/security/doc_level_security_roles.js b/x-pack/test/functional/apps/security/doc_level_security_roles.js index 72f463be48fd5..d8a3e40ccc010 100644 --- a/x-pack/test/functional/apps/security/doc_level_security_roles.js +++ b/x-pack/test/functional/apps/security/doc_level_security_roles.js @@ -15,7 +15,8 @@ export default function ({ getService, getPageObjects }) { const screenshot = getService('screenshots'); const PageObjects = getPageObjects(['security', 'common', 'header', 'discover', 'settings']); - describe('dls', function () { + // Skipped as failing on ES Promotion: https://github.com/elastic/kibana/issues/70818 + describe.skip('dls', function () { before('initialize tests', async () => { await esArchiver.load('empty_kibana'); await esArchiver.loadIfNeeded('security/dlstest');