From 2f65e138d75bf940d12318008b21f440da90fecf Mon Sep 17 00:00:00 2001 From: Pete Harverson Date: Thu, 25 Aug 2022 11:18:15 +0100 Subject: [PATCH 01/50] [ML] Improves messaging when an anomaly detection forecast errors (#139345) * [ML] Improves messaging when an anomaly detection forecast errors * [ML] Edits following review --- .../forecasting_modal/forecast_progress.js | 36 ++++++++----------- .../forecasting_modal/forecasting_modal.js | 15 ++++++-- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecast_progress.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecast_progress.js index c44775fdbcf6..6ad03ceb529d 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecast_progress.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecast_progress.js @@ -32,13 +32,11 @@ export function ForecastProgress({ forecastProgress, jobOpeningState, jobClosing - -

- -

+ +
@@ -52,13 +50,11 @@ export function ForecastProgress({ forecastProgress, jobOpeningState, jobClosing - -

- -

+ +
{forecastProgress >= 0 && ( @@ -81,13 +77,11 @@ export function ForecastProgress({ forecastProgress, jobOpeningState, jobClosing - -

- -

+ +
diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js index 72120de653b1..64bc1eefccd7 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/components/forecasting_modal/forecasting_modal.js @@ -18,6 +18,7 @@ import { EuiButton, EuiToolTip } from '@elastic/eui'; import { FORECAST_REQUEST_STATE, JOB_STATE } from '../../../../../common/constants/states'; import { MESSAGE_LEVEL } from '../../../../../common/constants/message_levels'; +import { extractErrorMessage } from '../../../../../common/util/errors'; import { isJobVersionGte } from '../../../../../common/util/job_utils'; import { parseInterval } from '../../../../../common/util/parse_interval'; import { Modal } from './modal'; @@ -178,8 +179,18 @@ export class ForecastingModalUI extends Component { runForecastErrorHandler = (resp, closeJob) => { this.setState({ forecastProgress: PROGRESS_STATES.ERROR }); console.log('Time series forecast modal - error running forecast:', resp); - if (resp && resp.message) { - this.addMessage(resp.message, MESSAGE_LEVEL.ERROR, true); + + const errorMessage = resp ? extractErrorMessage(resp) : undefined; + + if (errorMessage && errorMessage.length > 0) { + this.addMessage( + i18n.translate('xpack.ml.timeSeriesExplorer.forecastingModal.errorRunningForecastMessage', { + defaultMessage: 'An error has occurred running the forecast: {errorMessage}', + values: { errorMessage }, + }), + MESSAGE_LEVEL.ERROR, + true + ); } else { this.addMessage( i18n.translate( From 9c3ed2895fd2139c68474f3dcbf5f58f3b2585d0 Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Thu, 25 Aug 2022 13:14:24 +0200 Subject: [PATCH 02/50] [ML] Attach the anomaly swim lane embeddable to Case (#138994) * ceses wip * cases flyout and modal * add theme provider * render embeddable component * update context menu * basic embeddable props description * update icons * set absolute time range * get permissions * update actions compatibility * add path to tsconfig * check permission for attach action * refactor * use fieldFormats for dates * functional tests * revert test subj * add generalCases * hide panel on action click * improve assertion * asserting case content * wip asserting swim lane content in Cases * unique id for embeddable, fix types * assert embeddable id and swim lane * resolve nit comments --- .../ml/string_hash/src/string_hash.test.ts | 6 + .../cases/public/components/create/title.tsx | 2 + x-pack/plugins/cases/public/index.tsx | 2 +- x-pack/plugins/cases/public/types.ts | 7 +- x-pack/plugins/ml/kibana.json | 4 +- x-pack/plugins/ml/public/application/app.tsx | 6 +- .../contexts/kibana/kibana_context.ts | 2 + .../contexts/kibana/use_timefilter.ts | 11 +- .../application/explorer/anomaly_timeline.tsx | 149 +++++++++++++++--- .../application/routing/routes/explorer.tsx | 60 ++++--- x-pack/plugins/ml/public/cases/index.tsx | 8 + .../register_anomaly_swim_lane_attachment.tsx | 118 ++++++++++++++ .../cases/register_cases_attachments.ts | 19 +++ .../anomaly_swimlane_embeddable.tsx | 3 +- .../anomaly_swimlane/embeddable_component.tsx | 38 +++++ .../embeddable_swim_lane_container.test.tsx | 4 +- .../embeddable_swim_lane_container.tsx | 20 ++- .../embeddables/anomaly_swimlane/index.ts | 1 + .../swimlane_input_resolver.ts | 4 +- x-pack/plugins/ml/public/plugin.ts | 11 +- .../ml/public/register_helper/index.ts | 1 + .../apply_influencer_filters_action.tsx | 10 +- .../ui_actions/apply_time_range_action.tsx | 12 +- x-pack/plugins/ml/tsconfig.json | 3 +- .../ml/anomaly_detection/anomaly_explorer.ts | 61 ++++++- .../test/functional/services/cases/common.ts | 14 ++ .../test/functional/services/cases/create.ts | 60 +++++-- .../test/functional/services/cases/index.ts | 6 +- .../services/cases/single_case_view.ts | 21 +++ .../services/ml/anomaly_explorer.ts | 15 ++ x-pack/test/functional/services/ml/cases.ts | 65 ++++++++ x-pack/test/functional/services/ml/index.ts | 4 + .../test/functional/services/ml/navigation.ts | 18 +-- .../functional/services/ml/security_common.ts | 1 + .../test/functional/services/ml/swim_lane.ts | 3 + 35 files changed, 670 insertions(+), 99 deletions(-) create mode 100644 x-pack/plugins/ml/public/cases/index.tsx create mode 100644 x-pack/plugins/ml/public/cases/register_anomaly_swim_lane_attachment.tsx create mode 100644 x-pack/plugins/ml/public/cases/register_cases_attachments.ts create mode 100644 x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_component.tsx create mode 100644 x-pack/test/functional/services/ml/cases.ts diff --git a/x-pack/packages/ml/string_hash/src/string_hash.test.ts b/x-pack/packages/ml/string_hash/src/string_hash.test.ts index 3354e3645579..bc5b16a3da44 100644 --- a/x-pack/packages/ml/string_hash/src/string_hash.test.ts +++ b/x-pack/packages/ml/string_hash/src/string_hash.test.ts @@ -13,4 +13,10 @@ describe('stringHash', () => { const hash2 = stringHash('the-string-2'); expect(hash1).not.toBe(hash2); }); + + test('should return the same number for identical strings', () => { + const hash1 = stringHash('the-string-1'); + const hash2 = stringHash('the-string-1'); + expect(hash1).toBe(hash2); + }); }); diff --git a/x-pack/plugins/cases/public/components/create/title.tsx b/x-pack/plugins/cases/public/components/create/title.tsx index ae8f51717313..9918818a6e75 100644 --- a/x-pack/plugins/cases/public/components/create/title.tsx +++ b/x-pack/plugins/cases/public/components/create/title.tsx @@ -24,6 +24,8 @@ const TitleComponent: React.FC = ({ isLoading }) => ( autoFocus: true, fullWidth: true, disabled: isLoading, + // TODO set a custom test subj + // 'data-test-subj': 'caseTitleInput', }, }} /> diff --git a/x-pack/plugins/cases/public/index.tsx b/x-pack/plugins/cases/public/index.tsx index 554fa8bad268..0f1e8e3cad4f 100644 --- a/x-pack/plugins/cases/public/index.tsx +++ b/x-pack/plugins/cases/public/index.tsx @@ -15,7 +15,7 @@ export function plugin(initializerContext: PluginInitializerContext) { export { DRAFT_COMMENT_STORAGE_ID } from './components/markdown_editor/plugins/lens/constants'; export type { CasesUiPlugin }; -export type { CasesUiStart } from './types'; +export type { CasesUiStart, CasesUiSetup } from './types'; export type { GetCasesProps } from './client/ui/get_cases'; export type { GetCreateCaseFlyoutProps } from './client/ui/get_create_case_flyout'; export type { GetAllCasesSelectorModalProps } from './client/ui/get_all_cases_selector_modal'; diff --git a/x-pack/plugins/cases/public/types.ts b/x-pack/plugins/cases/public/types.ts index 00ffa538c2f9..f25d3db46dc5 100644 --- a/x-pack/plugins/cases/public/types.ts +++ b/x-pack/plugins/cases/public/types.ts @@ -26,6 +26,7 @@ import type { CasesMetricsRequest, CasesStatusRequest, CommentRequestAlertType, + CommentRequestPersistableStateType, CommentRequestUserType, } from '../common/api'; import type { UseCasesAddToExistingCaseModal } from './components/all_cases/selector_modal/use_cases_add_to_existing_case_modal'; @@ -144,7 +145,11 @@ export interface CasesUiStart { }; } -export type SupportedCaseAttachment = CommentRequestAlertType | CommentRequestUserType; +export type SupportedCaseAttachment = + | CommentRequestAlertType + | CommentRequestUserType + | CommentRequestPersistableStateType; + export type CaseAttachments = SupportedCaseAttachment[]; export type CaseAttachmentWithoutOwner = DistributiveOmit; export type CaseAttachmentsWithoutOwner = CaseAttachmentWithoutOwner[]; diff --git a/x-pack/plugins/ml/kibana.json b/x-pack/plugins/ml/kibana.json index c983889d6500..8104d9ef3d51 100644 --- a/x-pack/plugins/ml/kibana.json +++ b/x-pack/plugins/ml/kibana.json @@ -34,11 +34,13 @@ "maps", "security", "spaces", - "usageCollection" + "usageCollection", + "cases" ], "server": true, "ui": true, "requiredBundles": [ + "cases", "charts", "dashboard", "esUiShared", diff --git a/x-pack/plugins/ml/public/application/app.tsx b/x-pack/plugins/ml/public/application/app.tsx index 50417aafab9b..53c50893bcdf 100644 --- a/x-pack/plugins/ml/public/application/app.tsx +++ b/x-pack/plugins/ml/public/application/app.tsx @@ -25,7 +25,10 @@ import { mlApiServicesProvider } from './services/ml_api_service'; import { HttpService } from './services/http_service'; import { ML_APP_LOCATOR, ML_PAGES } from '../../common/constants/locator'; -export type MlDependencies = Omit & +export type MlDependencies = Omit< + MlSetupDependencies, + 'share' | 'fieldFormats' | 'maps' | 'cases' +> & MlStartDependencies; interface AppProps { @@ -87,6 +90,7 @@ const App: FC = ({ coreStart, deps, appMountParams }) => { fieldFormats: deps.fieldFormats, dashboard: deps.dashboard, charts: deps.charts, + cases: deps.cases, ...coreStart, }; diff --git a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts index 05b7dfeb5320..e8e694b1b6f2 100644 --- a/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts +++ b/x-pack/plugins/ml/public/application/contexts/kibana/kibana_context.ts @@ -22,6 +22,7 @@ import type { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; import type { DashboardSetup } from '@kbn/dashboard-plugin/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { CasesUiStart } from '@kbn/cases-plugin/public'; import type { MlServicesContext } from '../../app'; interface StartPlugins { @@ -39,6 +40,7 @@ interface StartPlugins { dashboard: DashboardSetup; spacesApi: SpacesPluginStart; charts: ChartsPluginStart; + cases?: CasesUiStart; } export type StartServices = CoreStart & StartPlugins & { diff --git a/x-pack/plugins/ml/public/application/contexts/kibana/use_timefilter.ts b/x-pack/plugins/ml/public/application/contexts/kibana/use_timefilter.ts index 82ea7720ec74..4550f0fd2aa1 100644 --- a/x-pack/plugins/ml/public/application/contexts/kibana/use_timefilter.ts +++ b/x-pack/plugins/ml/public/application/contexts/kibana/use_timefilter.ts @@ -48,11 +48,12 @@ export const useRefreshIntervalUpdates = () => { ); }; -export const useTimeRangeUpdates = () => { +export const useTimeRangeUpdates = (absolute = false) => { const timefilter = useTimefilter(); - return useObservable( - timefilter.getTimeUpdate$().pipe(map(timefilter.getTime)), - timefilter.getTime() - ); + const getTimeCallback = absolute + ? timefilter.getAbsoluteTime.bind(timefilter) + : timefilter.getTime.bind(timefilter); + + return useObservable(timefilter.getTimeUpdate$().pipe(map(getTimeCallback)), getTimeCallback()); }; diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx index b8f6e5643369..8b83d1f76592 100644 --- a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx +++ b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx @@ -10,8 +10,9 @@ import { isEqual } from 'lodash'; import { EuiButtonEmpty, EuiButtonIcon, - EuiContextMenuItem, - EuiContextMenuPanel, + EuiContextMenu, + EuiContextMenuPanelDescriptor, + EuiContextMenuPanelItemDescriptor, EuiFlexGroup, EuiFlexItem, EuiPanel, @@ -25,11 +26,21 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import useObservable from 'react-use/lib/useObservable'; -import { OVERALL_LABEL, SWIMLANE_TYPE, VIEW_BY_JOB_LABEL } from './explorer_constants'; +import { CommentType } from '@kbn/cases-plugin/common'; +import { stringHash } from '@kbn/ml-string-hash'; +import { useTimeRangeUpdates } from '../contexts/kibana/use_timefilter'; +import type { AnomalySwimlaneEmbeddableInput } from '../../embeddables'; +import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE } from '../..'; +import { + OVERALL_LABEL, + SWIMLANE_TYPE, + SwimlaneType, + VIEW_BY_JOB_LABEL, +} from './explorer_constants'; import { AddSwimlaneToDashboardControl } from './dashboard_controls/add_swimlane_to_dashboard_controls'; import { useMlKibana } from '../contexts/kibana'; import { ExplorerState } from './reducers/explorer_reducer'; -import { ExplorerNoInfluencersFound } from './components/explorer_no_influencers_found/explorer_no_influencers_found'; +import { ExplorerNoInfluencersFound } from './components/explorer_no_influencers_found'; import { SwimlaneContainer } from './swimlane_container'; import { AppStateSelectedCells, OverallSwimlaneData, ViewBySwimLaneData } from './explorer_utils'; import { NoOverallData } from './components/no_overall_data'; @@ -61,9 +72,14 @@ export const AnomalyTimeline: FC = React.memo( services: { application: { capabilities }, charts: chartsService, + cases, }, } = useMlKibana(); + const globalTimeRange = useTimeRangeUpdates(true); + + const selectCaseModal = cases?.hooks.getUseCasesAddToExistingCaseModal(); + const { anomalyExplorerCommonStateService, anomalyTimelineStateService } = useAnomalyExplorerContext(); @@ -87,7 +103,10 @@ export const AnomalyTimeline: FC = React.memo( const swimlaneLimit = useObservable(anomalyTimelineStateService.getSwimLaneCardinality$()); - const selectedJobs = useObservable(anomalyExplorerCommonStateService.getSelectedJobs$()); + const selectedJobs = useObservable( + anomalyExplorerCommonStateService.getSelectedJobs$(), + anomalyExplorerCommonStateService.getSelectedJobs() + ); const loading = useObservable(anomalyTimelineStateService.isOverallSwimLaneLoading$(), true); @@ -145,26 +164,116 @@ export const AnomalyTimeline: FC = React.memo( [severityUpdate, swimLaneSeverity] ); + const openCasesModal = useCallback( + (swimLaneType: SwimlaneType) => { + const persistableStateAttachmentState = { + swimlaneType: swimLaneType, + ...(swimLaneType === SWIMLANE_TYPE.VIEW_BY ? { viewBy: viewBySwimlaneFieldName } : {}), + jobIds: selectedJobs?.map((v) => v.id), + timeRange: globalTimeRange, + } as AnomalySwimlaneEmbeddableInput; + + // Creates unique id based on the input + persistableStateAttachmentState.id = stringHash( + JSON.stringify(persistableStateAttachmentState) + ).toString(); + + selectCaseModal!.open({ + attachments: [ + { + type: CommentType.persistableState, + persistableStateAttachmentTypeId: ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, + // TODO Cases: improve type for persistableStateAttachmentState with io-ts + persistableStateAttachmentState: JSON.parse( + JSON.stringify(persistableStateAttachmentState) + ), + }, + ], + }); + }, + [selectCaseModal, selectedJobs, globalTimeRange, viewBySwimlaneFieldName] + ); + const annotations = useMemo(() => overallAnnotations.annotationsData, [overallAnnotations]); - const menuItems = useMemo(() => { - const items = []; + const closePopoverOnAction = useCallback( + (actionCallback: Function) => { + return () => { + setIsMenuOpen(false); + actionCallback(); + }; + }, + [setIsMenuOpen] + ); + + const menuPanels = useMemo(() => { + const rootItems: EuiContextMenuPanelItemDescriptor[] = []; + const panels: EuiContextMenuPanelDescriptor[] = [{ id: 0, items: rootItems }]; + if (canEditDashboards) { - items.push( - + rootItems.push({ + name: ( - - ); + ), + onClick: closePopoverOnAction(setIsAddDashboardActive.bind(null, true)), + 'data-test-subj': 'mlAnomalyTimelinePanelAddToDashboardButton', + }); + } + + const casesPrivileges = cases?.helpers.canUseCases(); + + if ((!!casesPrivileges?.create || !!casesPrivileges?.update) && selectCaseModal) { + rootItems.push({ + panel: 1, + name: ( + + ), + 'data-test-subj': 'mlAnomalyTimelinePanelAttachToCaseButton', + }); + + panels.push({ + id: 1, + initialFocusedItemIndex: 0, + title: ( + + ), + items: [ + { + name: ( + + ), + onClick: closePopoverOnAction(openCasesModal.bind(null, 'overall')), + 'data-test-subj': 'mlAnomalyTimelinePanelAttachOverallButton', + }, + { + name: ( + + ), + onClick: closePopoverOnAction(openCasesModal.bind(null, 'viewBy')), + 'data-test-subj': 'mlAnomalyTimelinePanelAttachViewByButton', + }, + ], + }); } - return items; - }, [canEditDashboards]); + + return panels; + }, [canEditDashboards, openCasesModal, viewBySwimlaneFieldName]); // If selecting a cell in the 'view by' swimlane, indicate the corresponding time in the Overall swimlane. const overallCellSelection: AppStateSelectedCells | undefined = useMemo(() => { @@ -214,7 +323,7 @@ export const AnomalyTimeline: FC = React.memo( - {menuItems.length > 0 && ( + {menuPanels[0].items!.length > 0 ? ( = React.memo( panelPaddingSize="none" anchorPosition="downLeft" > - + - )} + ) : null}
diff --git a/x-pack/plugins/ml/public/application/routing/routes/explorer.tsx b/x-pack/plugins/ml/public/application/routing/routes/explorer.tsx index 744852279b41..83b487b8a3f5 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/explorer.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/explorer.tsx @@ -5,14 +5,15 @@ * 2.0. */ -import React, { FC, useEffect, useState, useCallback, useMemo } from 'react'; +import React, { FC, useCallback, useEffect, useMemo, useState } from 'react'; import useObservable from 'react-use/lib/useObservable'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { NavigateToPath } from '../../contexts/kibana'; +import { EuiThemeProvider as StyledComponentsThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { NavigateToPath, useMlKibana, useTimefilter } from '../../contexts/kibana'; import { MlJobWithTimeRange } from '../../../../common/types/anomaly_detection_jobs'; @@ -31,7 +32,6 @@ import { useTableInterval } from '../../components/controls/select_interval'; import { useTableSeverity } from '../../components/controls/select_severity'; import { useUrlState } from '../../util/url_state'; import { getBreadcrumbWithUrlForApp } from '../breadcrumbs'; -import { useTimefilter } from '../../contexts/kibana'; import { JOB_ID } from '../../../../common/constants/anomalies'; import { MlAnnotationUpdatesContext } from '../../contexts/ml/ml_annotation_updates_context'; import { AnnotationUpdatesService } from '../../services/annotations_service'; @@ -96,6 +96,10 @@ interface ExplorerUrlStateManagerProps { } const ExplorerUrlStateManager: FC = ({ jobsWithTimeRange }) => { + const { + services: { cases }, + } = useMlKibana(); + const [, , explorerUrlStateService] = useExplorerUrlState(); const anomalyExplorerContext = useAnomalyExplorerContextValue(explorerUrlStateService); @@ -245,6 +249,10 @@ const ExplorerUrlStateManager: FC = ({ jobsWithTim return null; } + const CasesContext = cases?.ui.getCasesContext() ?? React.Fragment; + + const casesPermissions = cases?.helpers.canUseCases(); + return (
@@ -260,27 +268,31 @@ const ExplorerUrlStateManager: FC = ({ jobsWithTim - - {jobsWithTimeRange.length === 0 ? ( - - ) : ( - - )} - + + + + {jobsWithTimeRange.length === 0 ? ( + + ) : ( + + )} + + +
); }; diff --git a/x-pack/plugins/ml/public/cases/index.tsx b/x-pack/plugins/ml/public/cases/index.tsx new file mode 100644 index 000000000000..674cf9216715 --- /dev/null +++ b/x-pack/plugins/ml/public/cases/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { registerCasesAttachments } from './register_cases_attachments'; diff --git a/x-pack/plugins/ml/public/cases/register_anomaly_swim_lane_attachment.tsx b/x-pack/plugins/ml/public/cases/register_anomaly_swim_lane_attachment.tsx new file mode 100644 index 000000000000..faa6440a9a57 --- /dev/null +++ b/x-pack/plugins/ml/public/cases/register_anomaly_swim_lane_attachment.tsx @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiButtonIcon, EuiDescriptionList } from '@elastic/eui'; +import { CasesUiSetup } from '@kbn/cases-plugin/public'; +import { CoreStart } from '@kbn/core/public'; +import { PersistableStateAttachmentViewProps } from '@kbn/cases-plugin/public/client/attachment_framework/types'; +import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; +import { MlStartDependencies } from '../plugin'; +import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, AnomalySwimlaneEmbeddableInput } from '..'; +import { PLUGIN_ICON } from '../../common/constants/app'; +import { getAnomalySwimLaneEmbeddableComponent } from '../embeddables/anomaly_swimlane'; + +const AttachmentActions: React.FC = () => { + return ( + {}} + iconType="boxesHorizontal" + aria-label="See attachment" + /> + ); +}; + +export function registerAnomalySwimLaneCasesAttachment( + cases: CasesUiSetup, + coreStart: CoreStart, + pluginStart: MlStartDependencies +) { + cases.attachmentFramework.registerPersistableState({ + id: ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, + icon: PLUGIN_ICON, + // TODO check where this name is presented + displayName: i18n.translate('xpack.ml.cases.anomalySwimLane.displayName', { + defaultMessage: 'Anomaly swim lane', + }), + getAttachmentViewObject: () => ({ + event: ( + + ), + timelineAvatar: PLUGIN_ICON, + actions: , + children: React.lazy(() => { + return Promise.resolve().then(() => { + const EmbeddableComponent = getAnomalySwimLaneEmbeddableComponent(coreStart, pluginStart); + + return { + default: React.memo((props: PersistableStateAttachmentViewProps) => { + const { persistableStateAttachmentState } = props; + + const dataFormatter = pluginStart.fieldFormats.deserialize({ + id: FIELD_FORMAT_IDS.DATE, + }); + + const inputProps = + persistableStateAttachmentState as unknown as AnomalySwimlaneEmbeddableInput; + + return ( + <> + + ), + description: inputProps.jobIds.join(', '), + }, + ...(inputProps.viewBy + ? [ + { + title: ( + + ), + description: inputProps.viewBy, + }, + ] + : []), + { + title: ( + + ), + description: `${dataFormatter.convert( + inputProps.timeRange.from + )} - ${dataFormatter.convert(inputProps.timeRange.to)}`, + }, + ]} + /> + + + ); + }), + }; + }); + }), + }), + }); +} diff --git a/x-pack/plugins/ml/public/cases/register_cases_attachments.ts b/x-pack/plugins/ml/public/cases/register_cases_attachments.ts new file mode 100644 index 000000000000..8a488cb79a82 --- /dev/null +++ b/x-pack/plugins/ml/public/cases/register_cases_attachments.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CasesUiSetup } from '@kbn/cases-plugin/public'; +import { CoreStart } from '@kbn/core/public'; +import { MlStartDependencies } from '../plugin'; +import { registerAnomalySwimLaneCasesAttachment } from './register_anomaly_swim_lane_attachment'; + +export function registerCasesAttachments( + cases: CasesUiSetup, + coreStart: CoreStart, + pluginStart: MlStartDependencies +) { + registerAnomalySwimLaneCasesAttachment(cases, coreStart, pluginStart); +} diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx index 639136b16947..c024341da42a 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx @@ -23,6 +23,7 @@ import { AnomalySwimlaneServices, } from '..'; import { EmbeddableLoading } from '../common/components/embeddable_loading_fallback'; + export const getDefaultSwimlanePanelTitle = (jobIds: JobId[]) => i18n.translate('xpack.ml.swimlaneEmbeddable.title', { defaultMessage: 'ML anomaly swim lane for {jobIds}', @@ -90,7 +91,7 @@ export class AnomalySwimlaneEmbeddable extends Embeddable< { + return ; + }; +} + +const EmbeddableRootWrapper: FC<{ + factory: EmbeddableFactory; + input: AnomalySwimlaneEmbeddableInput; +}> = ({ factory, input }) => { + const [embeddable, loading, error] = useEmbeddableFactory({ factory, input }); + if (loading) { + return ; + } + return ; +}; diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.test.tsx b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.test.tsx index d64e1c1cd3d1..e59754e7b1a3 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.test.tsx +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.test.tsx @@ -98,7 +98,7 @@ describe('ExplorerSwimlaneContainer', () => { } services={services} @@ -140,7 +140,7 @@ describe('ExplorerSwimlaneContainer', () => { } services={services} diff --git a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx index 7a121e90b747..03c5cf75672f 100644 --- a/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx +++ b/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/embeddable_swim_lane_container.tsx @@ -11,6 +11,7 @@ import { Observable } from 'rxjs'; import { CoreStart } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; +import { css } from '@emotion/react'; import { Y_AXIS_LABEL_WIDTH } from '../../application/explorer/swimlane_annotation_container'; import { useEmbeddableExecutionContext } from '../common/use_embeddable_execution_context'; import { IAnomalySwimlaneEmbeddable } from './anomaly_swimlane_embeddable'; @@ -33,9 +34,9 @@ import { export interface ExplorerSwimlaneContainerProps { id: string; embeddableContext: InstanceType; - embeddableInput: Observable; + embeddableInput$: Observable; services: [CoreStart, MlDependencies, AnomalySwimlaneServices]; - refresh: Observable; + refresh: Observable; onInputChange: (input: Partial) => void; onOutputChange: (output: Partial) => void; onRenderComplete: () => void; @@ -46,7 +47,7 @@ export interface ExplorerSwimlaneContainerProps { export const EmbeddableSwimLaneContainer: FC = ({ id, embeddableContext, - embeddableInput, + embeddableInput$, services, refresh, onInputChange, @@ -57,7 +58,7 @@ export const EmbeddableSwimLaneContainer: FC = ( }) => { useEmbeddableExecutionContext( services[0].executionContext, - embeddableInput, + embeddableInput$, ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, id ); @@ -72,7 +73,7 @@ export const EmbeddableSwimLaneContainer: FC = ( const [swimlaneType, swimlaneData, perPage, setPerPage, timeBuckets, isLoading, error] = useSwimlaneInputResolver( - embeddableInput, + embeddableInput$, onInputChange, refresh, services, @@ -115,7 +116,7 @@ export const EmbeddableSwimLaneContainer: FC = ( } color="danger" iconType="alert" - style={{ width: '100%' }} + css={{ width: '100%' }} >

{error.message}

@@ -124,7 +125,10 @@ export const EmbeddableSwimLaneContainer: FC = ( return (
= ( noDataWarning={ ; @@ -133,6 +136,7 @@ export class MlPlugin implements Plugin { usageCollection: pluginsSetup.usageCollection, fieldFormats: pluginsStart.fieldFormats, lens: pluginsStart.lens, + cases: pluginsStart.cases, }, params ); @@ -151,7 +155,7 @@ export class MlPlugin implements Plugin { const licensing = pluginsSetup.licensing.license$.pipe(take(1)); licensing.subscribe(async (license) => { - const [coreStart] = await core.getStartServices(); + const [coreStart, pluginStart] = await core.getStartServices(); const { capabilities } = coreStart.application; if (isMlEnabled(license)) { @@ -174,6 +178,7 @@ export class MlPlugin implements Plugin { registerSearchLinks, registerMlAlerts, registerMapExtension, + registerCasesAttachments, } = await import('./register_helper'); const mlEnabled = isMlEnabled(license); @@ -193,6 +198,10 @@ export class MlPlugin implements Plugin { registerEmbeddables(pluginsSetup.embeddable, core); registerMlUiActions(pluginsSetup.uiActions, core); + if (pluginsSetup.cases) { + registerCasesAttachments(pluginsSetup.cases, coreStart, pluginStart); + } + const canUseMlAlerts = capabilities.ml?.canUseMlAlerts; if (pluginsSetup.triggersActionsUi && canUseMlAlerts) { registerMlAlerts(pluginsSetup.triggersActionsUi, pluginsSetup.alerting); diff --git a/x-pack/plugins/ml/public/register_helper/index.ts b/x-pack/plugins/ml/public/register_helper/index.ts index 47d9bad31997..b0377baf066d 100644 --- a/x-pack/plugins/ml/public/register_helper/index.ts +++ b/x-pack/plugins/ml/public/register_helper/index.ts @@ -11,3 +11,4 @@ export { registerMlUiActions } from '../ui_actions'; export { registerSearchLinks } from './register_search_links'; export { registerMlAlerts } from '../alerting'; export { registerMapExtension } from '../maps/register_map_extension'; +export { registerCasesAttachments } from '../cases'; diff --git a/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx b/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx index dc574b48849e..06128b7fa0ca 100644 --- a/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx +++ b/x-pack/plugins/ml/public/ui_actions/apply_influencer_filters_action.tsx @@ -8,6 +8,8 @@ import { Filter, FilterStateStore } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { createAction } from '@kbn/ui-actions-plugin/public'; +import { firstValueFrom } from 'rxjs'; +import { DashboardConstants } from '@kbn/dashboard-plugin/public'; import { MlCoreSetup } from '../plugin'; import { SWIMLANE_TYPE, VIEW_BY_JOB_LABEL } from '../application/explorer/explorer_constants'; import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, SwimLaneDrilldownContext } from '../embeddables'; @@ -15,6 +17,8 @@ import { CONTROLLED_BY_SWIM_LANE_FILTER } from './constants'; export const APPLY_INFLUENCER_FILTERS_ACTION = 'applyInfluencerFiltersAction'; +const supportedApps = [DashboardConstants.DASHBOARDS_ID]; + export function createApplyInfluencerFiltersAction( getStartServices: MlCoreSetup['getStartServices'] ) { @@ -68,13 +72,17 @@ export function createApplyInfluencerFiltersAction( ); }, async isCompatible({ embeddable, data }) { + const [{ application }] = await getStartServices(); + const appId = await firstValueFrom(application.currentAppId$); + // Only compatible with view by influencer swim lanes and single selection return ( embeddable.type === ANOMALY_SWIMLANE_EMBEDDABLE_TYPE && data !== undefined && data.type === SWIMLANE_TYPE.VIEW_BY && data.viewByFieldName !== VIEW_BY_JOB_LABEL && - data.lanes.length === 1 + data.lanes.length === 1 && + supportedApps.includes(appId!) ); }, }); diff --git a/x-pack/plugins/ml/public/ui_actions/apply_time_range_action.tsx b/x-pack/plugins/ml/public/ui_actions/apply_time_range_action.tsx index b146202e44bd..6f3f9a025858 100644 --- a/x-pack/plugins/ml/public/ui_actions/apply_time_range_action.tsx +++ b/x-pack/plugins/ml/public/ui_actions/apply_time_range_action.tsx @@ -8,11 +8,15 @@ import { i18n } from '@kbn/i18n'; import moment from 'moment'; import { createAction } from '@kbn/ui-actions-plugin/public'; +import { firstValueFrom } from 'rxjs'; +import { DashboardConstants } from '@kbn/dashboard-plugin/public'; import { MlCoreSetup } from '../plugin'; import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, SwimLaneDrilldownContext } from '../embeddables'; export const APPLY_TIME_RANGE_SELECTION_ACTION = 'applyTimeRangeSelectionAction'; +const supportedApps = [DashboardConstants.DASHBOARDS_ID]; + export function createApplyTimeRangeSelectionAction( getStartServices: MlCoreSetup['getStartServices'] ) { @@ -49,7 +53,13 @@ export function createApplyTimeRangeSelectionAction( }); }, async isCompatible({ embeddable, data }) { - return embeddable.type === ANOMALY_SWIMLANE_EMBEDDABLE_TYPE && data !== undefined; + const [{ application }] = await getStartServices(); + const appId = await firstValueFrom(application.currentAppId$); + return ( + embeddable.type === ANOMALY_SWIMLANE_EMBEDDABLE_TYPE && + data !== undefined && + supportedApps.includes(appId!) + ); }, }); } diff --git a/x-pack/plugins/ml/tsconfig.json b/x-pack/plugins/ml/tsconfig.json index bd89d383adce..55651e2f8116 100644 --- a/x-pack/plugins/ml/tsconfig.json +++ b/x-pack/plugins/ml/tsconfig.json @@ -32,6 +32,7 @@ { "path": "../spaces/tsconfig.json" }, { "path": "../alerting/tsconfig.json" }, { "path": "../triggers_actions_ui/tsconfig.json" }, - { "path": "../../../src/plugins/unified_search/tsconfig.json" } + { "path": "../../../src/plugins/unified_search/tsconfig.json" }, + { "path": "../cases/tsconfig.json" } ] } diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts b/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts index 26bca58221dd..9decc8ace11f 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection/anomaly_explorer.ts @@ -5,8 +5,11 @@ * 2.0. */ +import { stringHash } from '@kbn/ml-string-hash'; import { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; +import { AnomalySwimlaneEmbeddableInput } from '@kbn/ml-plugin/public'; import { FtrProviderContext } from '../../../ftr_provider_context'; +import { USER } from '../../../services/ml/security_common'; // @ts-expect-error not full interface const JOB_CONFIG: Job = { @@ -66,6 +69,7 @@ export default function ({ getService }: FtrProviderContext) { describe('anomaly explorer', function () { this.tags(['ml']); + before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); await ml.testResources.createIndexPatternIfNeeded('ft_farequote', '@timestamp'); @@ -368,13 +372,56 @@ export default function ({ getService }: FtrProviderContext) { await ml.anomaliesTable.assertTableRowsCount(10); }); - it('adds swim lane embeddable to a dashboard', async () => { - // should be the last step because it navigates away from the Anomaly Explorer page - await ml.testExecution.logTestStep( - 'should allow to attach anomaly swim lane embeddable to the dashboard' - ); - await ml.anomalyExplorer.openAddToDashboardControl(); - await ml.anomalyExplorer.addAndEditSwimlaneInDashboard('ML Test'); + describe('Anomaly Swim Lane as embeddable', function () { + beforeEach(async () => { + await ml.navigation.navigateToAnomalyExplorer(testData.jobConfig.job_id, { + from: '2016-02-07T00%3A00%3A00.000Z', + to: '2016-02-11T23%3A59%3A54.000Z', + }); + await ml.commonUI.waitForMlLoadingIndicatorToDisappear(); + await ml.commonUI.waitForDatePickerIndicatorLoaded(); + }); + + it('attaches swim lane embeddable to a case', async () => { + await ml.anomalyExplorer.attachSwimLaneToCase('viewBy', { + title: 'ML Test case', + description: 'Case with an anomaly swim lane', + tag: 'ml_case', + }); + + const expectedAttachment = { + swimlaneType: 'viewBy', + viewBy: 'airline', + jobIds: [testData.jobConfig.job_id], + timeRange: { + from: '2016-02-07T00:00:00.000Z', + to: '2016-02-11T23:59:54.000Z', + }, + } as AnomalySwimlaneEmbeddableInput; + + expectedAttachment.id = stringHash(JSON.stringify(expectedAttachment)).toString(); + + await ml.cases.assertCaseWithAnomalySwimLaneAttachment( + { + title: 'ML Test case', + description: 'Case with an anomaly swim lane', + tag: 'ml_case', + reporter: USER.ML_POWERUSER, + }, + expectedAttachment, + { + yAxisLabelCount: 10, + } + ); + }); + + it('adds swim lane embeddable to a dashboard', async () => { + await ml.testExecution.logTestStep( + 'should allow to attach anomaly swim lane embeddable to the dashboard' + ); + await ml.anomalyExplorer.openAddToDashboardControl(); + await ml.anomalyExplorer.addAndEditSwimlaneInDashboard('ML Test'); + }); }); }); } diff --git a/x-pack/test/functional/services/cases/common.ts b/x-pack/test/functional/services/cases/common.ts index c0e2ef106895..5b854979adfc 100644 --- a/x-pack/test/functional/services/cases/common.ts +++ b/x-pack/test/functional/services/cases/common.ts @@ -6,16 +6,20 @@ */ import expect from '@kbn/expect'; +import { ProvidedType } from '@kbn/test'; import { CaseStatuses } from '@kbn/cases-plugin/common'; import { CaseSeverity } from '@kbn/cases-plugin/common/api'; import { FtrProviderContext } from '../../ftr_provider_context'; +export type CasesCommon = ProvidedType; + export function CasesCommonServiceProvider({ getService, getPageObject }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const find = getService('find'); const header = getPageObject('header'); const common = getPageObject('common'); const toasts = getService('toasts'); + const retry = getService('retry'); return { /** @@ -75,5 +79,15 @@ export function CasesCommonServiceProvider({ getService, getPageObject }: FtrPro expect(await toast.getVisibleText()).to.contain(content); await toasts.dismissAllToasts(); }, + + async assertCaseModalVisible(expectVisible = true) { + await retry.tryForTime(5000, async () => { + if (expectVisible) { + await testSubjects.existOrFail('all-cases-modal'); + } else { + await testSubjects.missingOrFail('all-cases-modal'); + } + }); + }, }; } diff --git a/x-pack/test/functional/services/cases/create.ts b/x-pack/test/functional/services/cases/create.ts index 579247161016..e46201b1996c 100644 --- a/x-pack/test/functional/services/cases/create.ts +++ b/x-pack/test/functional/services/cases/create.ts @@ -8,12 +8,25 @@ import { CaseSeverity } from '@kbn/cases-plugin/common/api'; import uuid from 'uuid'; import { FtrProviderContext } from '../../ftr_provider_context'; +import type { CasesCommon } from './common'; -export function CasesCreateViewServiceProvider({ getService, getPageObject }: FtrProviderContext) { +export interface CreateCaseParams { + title?: string; + description?: string; + tag?: string; + severity?: CaseSeverity; + owner?: string; +} + +export function CasesCreateViewServiceProvider( + { getService, getPageObject }: FtrProviderContext, + casesCommon: CasesCommon +) { const common = getPageObject('common'); const testSubjects = getService('testSubjects'); const find = getService('find'); const comboBox = getService('comboBox'); + const retry = getService('retry'); return { /** @@ -41,18 +54,10 @@ export function CasesCreateViewServiceProvider({ getService, getPageObject }: Ft tag = 'tagme', severity = CaseSeverity.LOW, owner, - }: { - title?: string; - description?: string; - tag?: string; - severity?: CaseSeverity; - owner?: string; - }) { - // case name - await testSubjects.setValue('input', title); + }: CreateCaseParams) { + await this.setCaseTitle(title); - // case tag - await comboBox.setCustom('comboBoxInput', tag); + await this.setCaseTags(tag); // case description const descriptionArea = await find.byCssSelector('textarea.euiMarkdownEditorTextArea'); @@ -73,5 +78,36 @@ export function CasesCreateViewServiceProvider({ getService, getPageObject }: Ft // save await testSubjects.click('create-case-submit'); }, + + async setCaseTitle(title: string) { + await testSubjects.setValue('input', title); + }, + + async setCaseTags(tag: string) { + await comboBox.setCustom('comboBoxInput', tag); + }, + + async assertCreateCaseFlyoutVisible(expectVisible = true) { + await retry.tryForTime(5000, async () => { + if (expectVisible) { + await testSubjects.existOrFail('create-case-flyout'); + } else { + await testSubjects.missingOrFail('create-case-flyout'); + } + }); + }, + + async creteCaseFromFlyout(params: CreateCaseParams) { + await this.assertCreateCaseFlyoutVisible(true); + await this.createCase(params); + await this.assertCreateCaseFlyoutVisible(false); + }, + + async createCaseFromModal(params: CreateCaseParams) { + await casesCommon.assertCaseModalVisible(true); + await testSubjects.click('cases-table-add-case-filter-bar'); + await casesCommon.assertCaseModalVisible(false); + await this.creteCaseFromFlyout(params); + }, }; } diff --git a/x-pack/test/functional/services/cases/index.ts b/x-pack/test/functional/services/cases/index.ts index 0f6ad5ea8345..b4cfee637cb4 100644 --- a/x-pack/test/functional/services/cases/index.ts +++ b/x-pack/test/functional/services/cases/index.ts @@ -15,11 +15,13 @@ import { CasesSingleViewServiceProvider } from './single_case_view'; import { CasesTestResourcesServiceProvider } from './test_resources'; export function CasesServiceProvider(context: FtrProviderContext) { + const casesCommon = CasesCommonServiceProvider(context); + return { api: CasesAPIServiceProvider(context), - common: CasesCommonServiceProvider(context), + common: casesCommon, casesTable: CasesTableServiceProvider(context), - create: CasesCreateViewServiceProvider(context), + create: CasesCreateViewServiceProvider(context, casesCommon), navigation: CasesNavigationProvider(context), singleCase: CasesSingleViewServiceProvider(context), testResources: CasesTestResourcesServiceProvider(context), diff --git a/x-pack/test/functional/services/cases/single_case_view.ts b/x-pack/test/functional/services/cases/single_case_view.ts index 5c2afa179ab8..2db687f51477 100644 --- a/x-pack/test/functional/services/cases/single_case_view.ts +++ b/x-pack/test/functional/services/cases/single_case_view.ts @@ -86,5 +86,26 @@ export function CasesSingleViewServiceProvider({ getService, getPageObject }: Ft await addVisualizationButton.moveMouseTo(); await new Promise((resolve) => setTimeout(resolve, 500)); // give tooltip time to open }, + + async assertCaseTitle(expectedTitle: string) { + const actionTitle = await testSubjects.getVisibleText('header-page-title'); + expect(actionTitle).to.eql( + expectedTitle, + `Expected case title to be '${expectedTitle}' (got '${actionTitle}')` + ); + }, + + async assertCaseDescription(expectedDescription: string) { + const desc = await find.byCssSelector( + '[data-test-subj="description-action"] [data-test-subj="user-action-markdown"]' + ); + + const actualDescription = await desc.getVisibleText(); + + expect(expectedDescription).to.eql( + actualDescription, + `Expected case description to be '${expectedDescription}' (got '${actualDescription}')` + ); + }, }; } diff --git a/x-pack/test/functional/services/ml/anomaly_explorer.ts b/x-pack/test/functional/services/ml/anomaly_explorer.ts index a9219dafcf95..d02247f90b3c 100644 --- a/x-pack/test/functional/services/ml/anomaly_explorer.ts +++ b/x-pack/test/functional/services/ml/anomaly_explorer.ts @@ -7,7 +7,9 @@ import expect from '@kbn/expect'; +import type { SwimlaneType } from '@kbn/ml-plugin/public/application/explorer/explorer_constants'; import { FtrProviderContext } from '../../ftr_provider_context'; +import type { CreateCaseParams } from '../cases/create'; export function MachineLearningAnomalyExplorerProvider({ getPageObject, @@ -16,6 +18,7 @@ export function MachineLearningAnomalyExplorerProvider({ const dashboardPage = getPageObject('dashboard'); const retry = getService('retry'); const testSubjects = getService('testSubjects'); + const cases = getService('cases'); return { async assertAnomalyExplorerEmptyListMessageExists() { @@ -86,6 +89,18 @@ export function MachineLearningAnomalyExplorerProvider({ await testSubjects.existOrFail('mlAddToDashboardModal'); }, + async attachSwimLaneToCase(swimLaneType: SwimlaneType = 'overall', params: CreateCaseParams) { + const attachTestSubject = + swimLaneType === 'overall' + ? 'mlAnomalyTimelinePanelAttachOverallButton' + : 'mlAnomalyTimelinePanelAttachViewByButton'; + await testSubjects.click('mlAnomalyTimelinePanelMenu'); + await testSubjects.click('mlAnomalyTimelinePanelAttachToCaseButton'); + await testSubjects.click(attachTestSubject); + + await cases.create.createCaseFromModal(params); + }, + async addAndEditSwimlaneInDashboard(dashboardTitle: string) { await retry.tryForTime(30 * 1000, async () => { await this.filterDashboardSearchWithSearchString(dashboardTitle); diff --git a/x-pack/test/functional/services/ml/cases.ts b/x-pack/test/functional/services/ml/cases.ts new file mode 100644 index 000000000000..b9eec82f9f07 --- /dev/null +++ b/x-pack/test/functional/services/ml/cases.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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SwimlaneType } from '@kbn/ml-plugin/public/application/explorer/explorer_constants'; +import { AnomalySwimlaneEmbeddableInput } from '@kbn/ml-plugin/public'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { MlAnomalySwimLane } from './swim_lane'; + +export interface CaseParams { + title: string; + description: string; + reporter: string; + tag: string; +} + +export interface Attachment { + swimLaneType: SwimlaneType; +} + +export function MachineLearningCasesProvider( + { getPageObject, getService }: FtrProviderContext, + mlAnomalySwimLane: MlAnomalySwimLane +) { + const testSubjects = getService('testSubjects'); + const cases = getService('cases'); + const elasticChart = getService('elasticChart'); + + return { + async openCaseInCasesApp(tag: string) { + await cases.navigation.navigateToApp('cases', 'cases-app'); + await cases.casesTable.waitForTableToFinishLoading(); + await cases.casesTable.filterByTag(tag); + await cases.casesTable.waitForTableToFinishLoading(); + await cases.casesTable.goToFirstListedCase(); + }, + + async assertCaseWithAnomalySwimLaneAttachment( + params: CaseParams, + attachment: AnomalySwimlaneEmbeddableInput, + expectedSwimLaneState: { + yAxisLabelCount: number; + } + ) { + await this.openCaseInCasesApp(params.tag); + await elasticChart.setNewChartUiDebugFlag(true); + + // Assert case details + await cases.singleCase.assertCaseTitle(params.title); + await cases.singleCase.assertCaseDescription(params.description); + + await testSubjects.existOrFail('comment-persistableState-ml_anomaly_swimlane'); + + await mlAnomalySwimLane.waitForSwimLanesToLoad(); + await mlAnomalySwimLane.assertAxisLabelCount( + `mlSwimLaneEmbeddable_${attachment.id}`, + 'y', + expectedSwimLaneState.yAxisLabelCount + ); + }, + }; +} diff --git a/x-pack/test/functional/services/ml/index.ts b/x-pack/test/functional/services/ml/index.ts index 561bf4f6026b..92898efe4b56 100644 --- a/x-pack/test/functional/services/ml/index.ts +++ b/x-pack/test/functional/services/ml/index.ts @@ -57,6 +57,7 @@ import { TrainedModelsProvider } from './trained_models'; import { TrainedModelsTableProvider } from './trained_models_table'; import { MachineLearningJobAnnotationsProvider } from './job_annotations_table'; import { MlNodesPanelProvider } from './ml_nodes_list'; +import { MachineLearningCasesProvider } from './cases'; export function MachineLearningProvider(context: FtrProviderContext) { const commonAPI = MachineLearningCommonAPIProvider(context); @@ -128,11 +129,14 @@ export function MachineLearningProvider(context: FtrProviderContext) { const trainedModelsTable = TrainedModelsTableProvider(context, commonUI); const mlNodesPanel = MlNodesPanelProvider(context); + const cases = MachineLearningCasesProvider(context, swimLane); + return { anomaliesTable, anomalyExplorer, alerting, api, + cases, commonAPI, commonConfig, commonDataGrid, diff --git a/x-pack/test/functional/services/ml/navigation.ts b/x-pack/test/functional/services/ml/navigation.ts index bb1578cf4572..ec2aaec9c9e4 100644 --- a/x-pack/test/functional/services/ml/navigation.ts +++ b/x-pack/test/functional/services/ml/navigation.ts @@ -86,15 +86,6 @@ export function MachineLearningNavigationProvider({ }); }, - async assertMainTabsExist() { - await this.assertTabsExist('mlMainTab', [ - 'anomalyDetection', - 'dataFrames', - 'dataFrameAnalytics', - 'dataVisualizer', - ]); - }, - async assertTabEnabled(tabSubject: string, expectedValue: boolean) { await retry.tryForTime(10000, async () => { const isEnabled = await testSubjects.isEnabled(tabSubject); @@ -159,6 +150,15 @@ export function MachineLearningNavigationProvider({ await this.navigateToArea('~mlMainTab & ~anomalyDetection', 'mlPageJobManagement'); }, + async navigateToAnomalyExplorer(jobId: string, timeRange: { from: string; to: string }) { + await PageObjects.common.navigateToUrlWithBrowserHistory( + 'ml', + `/explorer`, + `?_g=(ml%3A(jobIds%3A!(${jobId}))%2CrefreshInterval%3A(display%3AOff%2Cpause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3A'${timeRange.from}'%2Cto%3A'${timeRange.to}'))` + ); + await PageObjects.header.waitUntilLoadingHasFinished(); + }, + async navigateToSingleMetricViewer(jobId: string) { await PageObjects.common.navigateToUrlWithBrowserHistory( 'ml', diff --git a/x-pack/test/functional/services/ml/security_common.ts b/x-pack/test/functional/services/ml/security_common.ts index 7af831285535..ae8f973228b3 100644 --- a/x-pack/test/functional/services/ml/security_common.ts +++ b/x-pack/test/functional/services/ml/security_common.ts @@ -153,6 +153,7 @@ export function MachineLearningSecurityCommonProvider({ getService }: FtrProvide savedObjectsManagement: ['all'], advancedSettings: ['all'], indexPatterns: ['all'], + generalCases: ['all'], }, spaces: ['*'], }, diff --git a/x-pack/test/functional/services/ml/swim_lane.ts b/x-pack/test/functional/services/ml/swim_lane.ts index a18e4539c12f..e088863c5638 100644 --- a/x-pack/test/functional/services/ml/swim_lane.ts +++ b/x-pack/test/functional/services/ml/swim_lane.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import { ProvidedType } from '@kbn/test'; import { DebugState } from '@elastic/charts'; import { DebugStateAxis } from '@elastic/charts/dist/state/types'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -13,6 +14,8 @@ import { WebElementWrapper } from '../../../../../test/functional/services/lib/w type HeatmapDebugState = Required>; +export type MlAnomalySwimLane = ProvidedType; + export function SwimLaneProvider({ getService }: FtrProviderContext) { const elasticChart = getService('elasticChart'); const browser = getService('browser'); From 1e175c727945c6d4f817fc66e962a912b6a3c34f Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 25 Aug 2022 14:13:50 +0200 Subject: [PATCH 03/50] [Enterprise Search] Fix connector id yml block indentation (#139459) --- .../search_index/connector/connector_configuration.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx index acd8c856c389..4c3878f11418 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx @@ -146,8 +146,8 @@ export const ConnectorConfiguration: React.FC = () => { {`${ apiKeyData?.encoded ? `elasticsearch: - api_key: "${apiKeyData?.encoded}" - ` + api_key: "${apiKeyData?.encoded}" +` : '' }connector_id: "${indexData.connector.id}" `} From 759ea55fd27b61244611f823c0e18bceab87f5f0 Mon Sep 17 00:00:00 2001 From: Jan Monschke Date: Thu, 25 Aug 2022 14:30:01 +0200 Subject: [PATCH 04/50] [SecuritySolution] Cleaning up some state & documentation in TGrid (#139377) * chore: remove `isQueryLoading` `isQueryLoading` is the same as `loading` so we can remove the extra state and effect * chore: document `isFirstUpdate` By reading the source code, it wasn't clear why `isFirstUpdate` is necessary. I added a comment that explains why it's there. Also moved the effect closer to its dependencies. * chore: remove `isFirstUpdate` in favor of showFullLoading `showFullLoading` is the non-effect equivalent of `isFirstUpdate` * chore: update comment * chore: remove unnecessary comment Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/t_grid/integrated/index.tsx | 31 ++++++++----------- .../components/t_grid/standalone/index.tsx | 30 ++++++++---------- 2 files changed, 26 insertions(+), 35 deletions(-) diff --git a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx index 898611d073a9..c684b3493fcb 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.tsx @@ -8,7 +8,7 @@ import { AlertConsumers } from '@kbn/rule-data-utils'; import { EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; -import React, { useEffect, useMemo, useRef, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { useDispatch } from 'react-redux'; @@ -181,7 +181,6 @@ const TGridIntegratedComponent: React.FC = ({ const dispatch = useDispatch(); const columnsHeader = isEmpty(columns) ? defaultHeaders : columns; const { uiSettings } = useKibana().services; - const [isQueryLoading, setIsQueryLoading] = useState(true); const [tableView, setTableView] = useState('gridView'); const getManageTimeline = useMemo(() => tGridSelectors.getManageTimelineById(), []); @@ -189,10 +188,6 @@ const TGridIntegratedComponent: React.FC = ({ getManageTimeline(state, id ?? '') ); - useEffect(() => { - dispatch(tGridActions.updateIsLoading({ id, isLoading: isQueryLoading })); - }, [dispatch, id, isQueryLoading]); - const justTitle = useMemo(() => {title}, [title]); const esQueryConfig = getEsQueryConfig(uiSettings); @@ -257,6 +252,10 @@ const TGridIntegratedComponent: React.FC = ({ startDate: start, }); + useEffect(() => { + dispatch(tGridActions.updateIsLoading({ id, isLoading: loading })); + }, [dispatch, id, loading]); + const totalCountMinusDeleted = useMemo( () => (totalCount > 0 ? totalCount - deletedEventIds.length : 0), [deletedEventIds.length, totalCount] @@ -264,24 +263,20 @@ const TGridIntegratedComponent: React.FC = ({ const hasAlerts = totalCountMinusDeleted > 0; + // Only show the table-spanning loading indicator when the query is loading and we + // don't have data (e.g. for the initial fetch). + // Subsequent fetches (e.g. for pagination) will show a small loading indicator on + // top of the table and the table will display the current page until the next page + // is fetched. This prevents a flicker when paginating. + const showFullLoading = loading && !hasAlerts; + const nonDeletedEvents = useMemo( () => events.filter((e) => !deletedEventIds.includes(e._id)), [deletedEventIds, events] ); - useEffect(() => { - setIsQueryLoading(loading); - }, [loading]); - const alignItems = tableView === 'gridView' ? 'baseline' : 'center'; - const isFirstUpdate = useRef(true); - useEffect(() => { - if (isFirstUpdate.current && !loading) { - isFirstUpdate.current = false; - } - }, [loading]); - useEffect(() => { setQuery(inspect, loading, refetch); }, [inspect, loading, refetch, setQuery]); @@ -307,7 +302,7 @@ const TGridIntegratedComponent: React.FC = ({ data-test-subj="events-viewer-panel" $isFullScreen={globalFullScreen} > - {isFirstUpdate.current && } + {showFullLoading && } {graphOverlay} diff --git a/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx index 14a03e8bd504..a56f452f98cb 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/standalone/index.tsx @@ -6,7 +6,7 @@ */ import { EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; -import React, { useEffect, useMemo, useState, useRef } from 'react'; +import React, { useEffect, useMemo } from 'react'; import styled from 'styled-components'; import { useDispatch } from 'react-redux'; import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; @@ -153,7 +153,6 @@ const TGridStandaloneComponent: React.FC = ({ const dispatch = useDispatch(); const columnsHeader = isEmpty(columns) ? defaultHeaders : columns; const { uiSettings } = useKibana().services; - const [isQueryLoading, setIsQueryLoading] = useState(false); const [indexPatternsLoading, { browserFields, indexPatterns }] = useFetchIndex(indexNames); const getTGrid = useMemo(() => tGridSelectors.getTGridByIdSelector(), []); @@ -165,10 +164,6 @@ const TGridStandaloneComponent: React.FC = ({ title, } = useDeepEqualSelector((state) => getTGrid(state, STANDALONE_ID ?? '')); - useEffect(() => { - dispatch(tGridActions.updateIsLoading({ id: STANDALONE_ID, isLoading: isQueryLoading })); - }, [dispatch, isQueryLoading]); - const justTitle = useMemo(() => {title}, [title]); const esQueryConfig = getEsQueryConfig(uiSettings); @@ -241,6 +236,10 @@ const TGridStandaloneComponent: React.FC = ({ }); setRefetch(refetch); + useEffect(() => { + dispatch(tGridActions.updateIsLoading({ id: STANDALONE_ID, isLoading: loading })); + }, [dispatch, loading]); + const { hasAlertsCrud, totalSelectAllAlerts } = useMemo(() => { return Object.entries(consumers).reduce<{ hasAlertsCrud: boolean; @@ -268,15 +267,18 @@ const TGridStandaloneComponent: React.FC = ({ ); const hasAlerts = totalCountMinusDeleted > 0; + // Only show the table-spanning loading indicator when the query is loading and we + // don't have data (e.g. for the initial fetch). + // Subsequent fetches (e.g. for pagination) will show a small loading indicator on + // top of the table and the table will display the current page until the next page + // is fetched. This prevents a flicker when paginating. + const showFullLoading = loading && !hasAlerts; + const nonDeletedEvents = useMemo( () => events.filter((e) => !deletedEventIds.includes(e._id)), [deletedEventIds, events] ); - useEffect(() => { - setIsQueryLoading(loading); - }, [loading]); - useEffect(() => { dispatch( tGridActions.createTGrid({ @@ -306,12 +308,6 @@ const TGridStandaloneComponent: React.FC = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - const isFirstUpdate = useRef(true); - useEffect(() => { - if (isFirstUpdate.current && !loading) { - isFirstUpdate.current = false; - } - }, [loading]); const timelineContext = { timelineId: STANDALONE_ID }; // Clear checkbox selection when new events are fetched @@ -328,7 +324,7 @@ const TGridStandaloneComponent: React.FC = ({ return ( - {isFirstUpdate.current && } + {showFullLoading && } {canQueryTimeline ? ( Date: Thu, 25 Aug 2022 16:18:48 +0200 Subject: [PATCH 05/50] [Security Solution Platform] Allow customizable plugin page layout #4666 (#138378) * [Security Solution Platform] Allow customizable plugin page layout #4666 * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../public/app/home/index.test.tsx | 26 ++-- .../public/app/home/index.tsx | 14 +- .../template_wrapper/bottom_bar/index.tsx | 25 ++-- .../app/home/template_wrapper/index.test.tsx | 2 +- .../app/home/template_wrapper/index.tsx | 127 +++++++++--------- .../security_solution/public/app/routes.tsx | 4 +- .../security_solution/public/cases/routes.tsx | 17 ++- .../public/cloud_security_posture/routes.tsx | 13 +- .../plugin_template_wrapper/index.tsx | 8 ++ .../plugin_template_wrapper.tsx | 35 +++++ .../use_show_pages_with_empty_view.test.tsx | 22 +-- .../use_show_pages_with_empty_view.tsx | 3 +- .../public/detections/routes.tsx | 9 +- .../public/exceptions/routes.tsx | 9 +- .../security_solution/public/hosts/routes.tsx | 11 +- .../public/kubernetes/routes.tsx | 11 +- .../public/landing_pages/routes.tsx | 31 +++-- .../public/management/routes.tsx | 11 +- .../public/network/routes.tsx | 11 +- .../public/overview/routes.tsx | 37 +++-- .../security_solution/public/plugin.tsx | 11 +- .../security_solution/public/rules/routes.tsx | 27 ++-- .../public/threat_intelligence/routes.tsx | 11 +- .../public/timelines/routes.tsx | 11 +- .../plugins/security_solution/public/types.ts | 12 +- .../security_solution/public/users/routes.tsx | 11 +- 26 files changed, 295 insertions(+), 214 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/app/home/index.test.tsx b/x-pack/plugins/security_solution/public/app/home/index.test.tsx index 4796249b6dbb..2f7fce9e2867 100644 --- a/x-pack/plugins/security_solution/public/app/home/index.test.tsx +++ b/x-pack/plugins/security_solution/public/app/home/index.test.tsx @@ -167,7 +167,7 @@ describe('HomePage', () => { it('calls useInitializeUrlParam for appQuery, filters and savedQuery', () => { render( - + @@ -193,7 +193,7 @@ describe('HomePage', () => { render( - + @@ -234,7 +234,7 @@ describe('HomePage', () => { render( - + @@ -266,7 +266,7 @@ describe('HomePage', () => { render( - + @@ -301,7 +301,7 @@ describe('HomePage', () => { render( - + @@ -318,7 +318,7 @@ describe('HomePage', () => { render( - + @@ -360,7 +360,7 @@ describe('HomePage', () => { render( - + @@ -405,7 +405,7 @@ describe('HomePage', () => { render( - + @@ -455,7 +455,7 @@ describe('HomePage', () => { const TestComponent = () => ( - + @@ -512,7 +512,7 @@ describe('HomePage', () => { const TestComponent = () => ( - + @@ -552,7 +552,7 @@ describe('HomePage', () => { render( - + @@ -577,7 +577,7 @@ describe('HomePage', () => { const TestComponent = () => ( - + @@ -605,7 +605,7 @@ describe('HomePage', () => { const TestComponent = () => ( - + diff --git a/x-pack/plugins/security_solution/public/app/home/index.tsx b/x-pack/plugins/security_solution/public/app/home/index.tsx index 61cd6a4be657..36940cc05564 100644 --- a/x-pack/plugins/security_solution/public/app/home/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/index.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { useLocation } from 'react-router-dom'; -import type { AppLeaveHandler, AppMountParameters } from '@kbn/core/public'; +import type { AppMountParameters } from '@kbn/core/public'; import { DragDropContextWrapper } from '../../common/components/drag_and_drop/drag_drop_context_wrapper'; import { SecuritySolutionAppWrapper } from '../../common/components/page'; @@ -20,7 +20,6 @@ import { } from '../../common/containers/sourcerer'; import { useUpgradeSecurityPackages } from '../../common/hooks/use_upgrade_security_packages'; import { GlobalHeader } from './global_header'; -import { SecuritySolutionTemplateWrapper } from './template_wrapper'; import { ConsoleManager } from '../../management/components/console/components/console_manager'; import { TourContextProvider } from '../../common/components/guided_onboarding'; @@ -30,15 +29,10 @@ import { useUpdateBrowserTitle } from '../../common/hooks/use_update_browser_tit interface HomePageProps { children: React.ReactNode; - onAppLeave: (handler: AppLeaveHandler) => void; setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; } -const HomePageComponent: React.FC = ({ - children, - onAppLeave, - setHeaderActionMenu, -}) => { +const HomePageComponent: React.FC = ({ children, setHeaderActionMenu }) => { const { pathname } = useLocation(); useInitSourcerer(getScopeFromPath(pathname)); useUrlState(); @@ -59,9 +53,7 @@ const HomePageComponent: React.FC = ({ <> - - {children} - + {children} diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx index 123ae4563f75..5b3ebe18a535 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx @@ -9,7 +9,7 @@ import React from 'react'; import type { KibanaPageTemplateProps } from '@kbn/shared-ux-page-kibana-template'; -import type { AppLeaveHandler } from '@kbn/core/public'; +import { useKibana } from '../../../../common/lib/kibana/kibana_react'; import { TimelineId } from '../../../../../common/types/timeline'; import { AutoSaveWarningMsg } from '../../../../timelines/components/timeline/auto_save_warning'; import { Flyout } from '../../../../timelines/components/flyout'; @@ -17,17 +17,18 @@ import { useResolveRedirect } from '../../../../common/hooks/use_resolve_redirec export const BOTTOM_BAR_CLASSNAME = 'timeline-bottom-bar'; -export const SecuritySolutionBottomBar = React.memo( - ({ onAppLeave }: { onAppLeave: (handler: AppLeaveHandler) => void }) => { - useResolveRedirect(); - return ( - <> - - - - ); - } -); +export const SecuritySolutionBottomBar = React.memo(() => { + useResolveRedirect(); + + const { onAppLeave } = useKibana().services; + + return ( + <> + + + + ); +}); export const SecuritySolutionBottomBarProps: KibanaPageTemplateProps['bottomBarProps'] = { className: BOTTOM_BAR_CLASSNAME, diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx index 24a42dbd6ee0..cd8208a10c36 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.test.tsx @@ -52,7 +52,7 @@ jest.mock('../../../common/components/navigation/use_security_solution_navigatio const renderComponent = () => { return render( - null}> +
{'child of wrapper'}
diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx index 79c7a0899e9c..e2078eca98e1 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx @@ -9,7 +9,7 @@ import React, { useMemo } from 'react'; import styled from 'styled-components'; import { EuiPanel, EuiThemeProvider, useEuiTheme } from '@elastic/eui'; import { IS_DRAGGING_CLASS_NAME } from '@kbn/securitysolution-t-grid'; -import type { AppLeaveHandler } from '@kbn/core/public'; +import type { KibanaPageTemplateProps } from '@kbn/shared-ux-page-kibana-template'; import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; import { useSecuritySolutionNavigation } from '../../../common/components/navigation/use_security_solution_navigation'; import { TimelineId } from '../../../../common/types/timeline'; @@ -32,10 +32,6 @@ const NO_DATA_PAGE_MAX_WIDTH = 950; const NO_DATA_PAGE_TEMPLATE_PROPS = { restrictWidth: NO_DATA_PAGE_MAX_WIDTH, template: 'centeredBody', - pageContentProps: { - hasShadow: false, - color: 'transparent', - }, }; /** @@ -73,70 +69,69 @@ const StyledKibanaPageTemplate = styled(KibanaPageTemplate)<{ `} `; -interface SecuritySolutionPageWrapperProps { - onAppLeave: (handler: AppLeaveHandler) => void; -} +export const SecuritySolutionTemplateWrapper: React.FC<{ + template?: KibanaPageTemplateProps['template'] | 'noData'; +}> = React.memo(({ children, template = 'default' }) => { + const solutionNav = useSecuritySolutionNavigation(); + const isPolicySettingsVisible = useIsPolicySettingsBarVisible(); + const [isTimelineBottomBarVisible] = useShowTimeline(); + const getTimelineShowStatus = useMemo(() => getTimelineShowStatusByIdSelector(), []); + const { show: isShowingTimelineOverlay } = useDeepEqualSelector((state) => + getTimelineShowStatus(state, TimelineId.active) + ); + const isGroupedNavEnabled = useIsGroupedNavigationEnabled(); + const addBottomPadding = + isTimelineBottomBarVisible || isPolicySettingsVisible || isGroupedNavEnabled; -export const SecuritySolutionTemplateWrapper: React.FC = - React.memo(({ children, onAppLeave }) => { - const solutionNav = useSecuritySolutionNavigation(); - const isPolicySettingsVisible = useIsPolicySettingsBarVisible(); - const [isTimelineBottomBarVisible] = useShowTimeline(); - const getTimelineShowStatus = useMemo(() => getTimelineShowStatusByIdSelector(), []); - const { show: isShowingTimelineOverlay } = useDeepEqualSelector((state) => - getTimelineShowStatus(state, TimelineId.active) - ); - const isGroupedNavEnabled = useIsGroupedNavigationEnabled(); - const addBottomPadding = - isTimelineBottomBarVisible || isPolicySettingsVisible || isGroupedNavEnabled; + const showEmptyState = useShowPagesWithEmptyView(); - const showEmptyState = useShowPagesWithEmptyView(); - const emptyStateProps = showEmptyState + const emptyStateProps = + showEmptyState || template === 'noData' ? { ...NO_DATA_PAGE_TEMPLATE_PROPS, - template: 'centeredContent', - pageContentProps: { verticalPosition: 'top' }, + template: 'centeredContent' as const, } - : {}; + : { template }; - // The bottomBar by default has a set 'dark' colorMode that doesn't match the global colorMode from the Advanced Settings - // To keep the mode in sync, we pass in the globalColorMode to the bottom bar here - const { colorMode: globalColorMode } = useEuiTheme(); - /* - * StyledKibanaPageTemplate is a styled EuiPageTemplate. Security solution currently passes the header - * and page content as the children of StyledKibanaPageTemplate, as opposed to using the pageHeader prop, - * which may account for any style discrepancies, such as the bottom border not extending the full width of the page, - * between EuiPageTemplate and the security solution pages. - */ - return ( - - - - ) - } - paddingSize="none" - solutionNav={solutionNav} - restrictWidth={false} - template="default" - {...emptyStateProps} - > - <> - - - {children} - - - - ); - }); + // The bottomBar by default has a set 'dark' colorMode that doesn't match the global colorMode from the Advanced Settings + // To keep the mode in sync, we pass in the globalColorMode to the bottom bar here + const { colorMode: globalColorMode } = useEuiTheme(); + /* + * StyledKibanaPageTemplate is a styled EuiPageTemplate. Security solution currently passes the header + * and page content as the children of StyledKibanaPageTemplate, as opposed to using the pageHeader prop, + * which may account for any style discrepancies, such as the bottom border not extending the full width of the page, + * between EuiPageTemplate and the security solution pages. + */ + return ( + + + + ) + } + paddingSize="none" + solutionNav={solutionNav} + restrictWidth={false} + {...emptyStateProps} + > + <> + + + {children} + + + + ); +}); + +SecuritySolutionTemplateWrapper.displayName = 'SecuritySolutionTemplateWrapper'; diff --git a/x-pack/plugins/security_solution/public/app/routes.tsx b/x-pack/plugins/security_solution/public/app/routes.tsx index 38625c0d7fc2..02b69267e31a 100644 --- a/x-pack/plugins/security_solution/public/app/routes.tsx +++ b/x-pack/plugins/security_solution/public/app/routes.tsx @@ -50,9 +50,7 @@ const PageRouterComponent: FC = ({ - - {children} - + {children} diff --git a/x-pack/plugins/security_solution/public/cases/routes.tsx b/x-pack/plugins/security_solution/public/cases/routes.tsx index 802dde39b251..c6108561a1da 100644 --- a/x-pack/plugins/security_solution/public/cases/routes.tsx +++ b/x-pack/plugins/security_solution/public/cases/routes.tsx @@ -11,16 +11,21 @@ import { TrackApplicationView } from '@kbn/usage-collection-plugin/public'; import type { SecuritySubPluginRoutes } from '../app/types'; import { CASES_PATH } from '../../common/constants'; import { Cases } from './pages'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; -export const CasesRoutes = () => ( - - - -); +export const CasesRoutes = () => { + return ( + + + + + + ); +}; export const routes: SecuritySubPluginRoutes = [ { path: CASES_PATH, - render: CasesRoutes, + component: CasesRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx b/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx index aa8355ef89e3..51cd069aa7b5 100644 --- a/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx +++ b/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx @@ -20,6 +20,7 @@ import { SecuritySolutionPageWrapper } from '../common/components/page_wrapper'; import { SpyRoute } from '../common/utils/route/spy_routes'; import { FiltersGlobal } from '../common/components/filters_global'; import { MANAGE } from '../app/translations'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; // This exists only for the type signature cast const CloudPostureSpyRoute = ({ pageName }: { pageName?: CloudSecurityPosturePageId }) => ( @@ -39,11 +40,13 @@ const CloudSecurityPosture = memo(() => { return ( // TODO: Finer granularity of this needs to be implemented in the cloud security posture plugin - - - - - + + + + + + + ); }); diff --git a/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx b/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx new file mode 100644 index 000000000000..c15d334e7afc --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './plugin_template_wrapper'; diff --git a/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx b/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx new file mode 100644 index 000000000000..ce47672a829f --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/plugin_template_wrapper/plugin_template_wrapper.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { FC } from 'react'; +import type { KibanaPageTemplateProps } from '@kbn/shared-ux-page-kibana-template'; +import { useKibana } from '../../lib/kibana'; + +interface PluginTemplateWrapperProps { + /** + * Accepts all the values from KibanaPageTemplate, as well as `noData` which centers the page contents. + */ + template?: KibanaPageTemplateProps['template'] | 'noData'; +} + +/** + * Uses securityLayout service to retrieve shared plugin wrapper component and renders plugin routes / children inside of it. + * + * The `template` prop can be used to alter the page layout for a given plugin route / all routes within a plugin - depending on the nesting. + */ +export const PluginTemplateWrapper: FC = ({ children, template }) => { + const { + services: { + securityLayout: { getPluginWrapper }, + }, + } = useKibana(); + + const Wrapper = getPluginWrapper(); + + return {children}; +}; diff --git a/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.test.tsx b/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.test.tsx index 7cf603cc7bfd..ac709799fac7 100644 --- a/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.test.tsx +++ b/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.test.tsx @@ -13,9 +13,7 @@ jest.mock('../route/use_route_spy', () => ({ .fn() .mockImplementationOnce(() => [{ pageName: 'hosts' }]) .mockImplementationOnce(() => [{ pageName: 'rules' }]) - .mockImplementationOnce(() => [{ pageName: 'network' }]) - .mockImplementationOnce(() => [{ pageName: 'get_started' }]) - .mockImplementationOnce(() => [{ pageName: 'get_started' }]), + .mockImplementationOnce(() => [{ pageName: 'network' }]), })); jest.mock('../../containers/sourcerer', () => ({ useSourcererDataView: jest @@ -52,22 +50,4 @@ describe('use show pages with empty view', () => { expect(emptyResult).toEqual(true); }); }); - - it('apply empty view for the landing page if indices do not exist', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useShowPagesWithEmptyView()); - await waitForNextUpdate(); - const emptyResult = result.current; - expect(emptyResult).toEqual(true); - }); - }); - - it('apply empty view for the landing page if indices exist', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useShowPagesWithEmptyView()); - await waitForNextUpdate(); - const emptyResult = result.current; - expect(emptyResult).toEqual(true); - }); - }); }); diff --git a/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.tsx b/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.tsx index 51c8b3bdd3dd..7f9688ef3c04 100644 --- a/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.tsx +++ b/x-pack/plugins/security_solution/public/common/utils/empty_view/use_show_pages_with_empty_view.tsx @@ -27,8 +27,7 @@ export const useShowPagesWithEmptyView = () => { const [{ pageName }] = useRouteSpy(); const { indicesExist } = useSourcererDataView(); - const shouldShowEmptyState = - (isPageNameWithEmptyView(pageName) && !indicesExist) || pageName === SecurityPageName.landing; + const shouldShowEmptyState = isPageNameWithEmptyView(pageName) && !indicesExist; const [showEmptyState, setShowEmptyState] = useState(shouldShowEmptyState); diff --git a/x-pack/plugins/security_solution/public/detections/routes.tsx b/x-pack/plugins/security_solution/public/detections/routes.tsx index b77f61085212..afb2db8aa8e9 100644 --- a/x-pack/plugins/security_solution/public/detections/routes.tsx +++ b/x-pack/plugins/security_solution/public/detections/routes.tsx @@ -9,9 +9,14 @@ import React from 'react'; import type { RouteProps, RouteComponentProps } from 'react-router-dom'; import { Redirect } from 'react-router-dom'; import { ALERTS_PATH, DETECTIONS_PATH } from '../../common/constants'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; import { Alerts } from './pages/alerts'; -const renderAlertsRoutes = () => ; +const AlertsRoutes = () => ( + + + +); const DetectionsRedirects = ({ location }: RouteComponentProps) => location.pathname === DETECTIONS_PATH ? ( @@ -27,6 +32,6 @@ export const routes: RouteProps[] = [ }, { path: ALERTS_PATH, - render: renderAlertsRoutes, + component: AlertsRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/exceptions/routes.tsx b/x-pack/plugins/security_solution/public/exceptions/routes.tsx index 9dad970be0fe..512baa600e29 100644 --- a/x-pack/plugins/security_solution/public/exceptions/routes.tsx +++ b/x-pack/plugins/security_solution/public/exceptions/routes.tsx @@ -15,15 +15,16 @@ import { ExceptionListsTable } from '../detections/pages/detection_engine/rules/ import { SpyRoute } from '../common/utils/route/spy_routes'; import { NotFoundPage } from '../app/404'; import { useReadonlyHeader } from '../use_readonly_header'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; -const ExceptionsRoutes = () => { - return ( +const ExceptionsRoutes = () => ( + - ); -}; + +); const ExceptionsContainerComponent: React.FC = () => { useReadonlyHeader(i18n.READ_ONLY_BADGE_TOOLTIP); diff --git a/x-pack/plugins/security_solution/public/hosts/routes.tsx b/x-pack/plugins/security_solution/public/hosts/routes.tsx index 0f6e371a6fdb..fbc757ba39f6 100644 --- a/x-pack/plugins/security_solution/public/hosts/routes.tsx +++ b/x-pack/plugins/security_solution/public/hosts/routes.tsx @@ -11,16 +11,19 @@ import { HostsContainer } from './pages'; import type { SecuritySubPluginRoutes } from '../app/types'; import { SecurityPageName } from '../app/types'; import { HOSTS_PATH } from '../../common/constants'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; export const HostsRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: HOSTS_PATH, - render: HostsRoutes, + component: HostsRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/kubernetes/routes.tsx b/x-pack/plugins/security_solution/public/kubernetes/routes.tsx index 4164849e67a2..67bd4a9fcad8 100644 --- a/x-pack/plugins/security_solution/public/kubernetes/routes.tsx +++ b/x-pack/plugins/security_solution/public/kubernetes/routes.tsx @@ -12,16 +12,19 @@ import { KubernetesContainer } from './pages'; import type { SecuritySubPluginRoutes } from '../app/types'; import { SecurityPageName } from '../app/types'; import { KUBERNETES_PATH } from '../../common/constants'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; export const KubernetesRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: KUBERNETES_PATH, - render: KubernetesRoutes, + component: KubernetesRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/landing_pages/routes.tsx b/x-pack/plugins/security_solution/public/landing_pages/routes.tsx index 590c411e128c..a9e7d9ddb27c 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/routes.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/routes.tsx @@ -14,36 +14,43 @@ import { DASHBOARDS_PATH, MANAGE_PATH, EXPLORE_PATH } from '../../common/constan import { ExploreLandingPage } from './pages/explore'; import { DashboardsLandingPage } from './pages/dashboards'; import { ManageLandingPage } from './pages/manage'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; export const ThreatHuntingRoutes = () => ( - - - + + + + + ); export const DashboardRoutes = () => ( - - - + + + + + ); export const ManageRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: EXPLORE_PATH, - render: ThreatHuntingRoutes, + component: ThreatHuntingRoutes, }, { path: DASHBOARDS_PATH, - render: DashboardRoutes, + component: DashboardRoutes, }, { path: MANAGE_PATH, - render: ManageRoutes, + component: ManageRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/management/routes.tsx b/x-pack/plugins/security_solution/public/management/routes.tsx index a13244b294b2..0ed0897ced5c 100644 --- a/x-pack/plugins/security_solution/public/management/routes.tsx +++ b/x-pack/plugins/security_solution/public/management/routes.tsx @@ -10,19 +10,22 @@ import { MANAGEMENT_PATH } from '../../common/constants'; import { ManagementContainer } from './pages'; import type { SecuritySubPluginRoutes } from '../app/types'; import { CurrentLicense } from '../common/components/current_license'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; /** * Returns the React Router Routes for the management area */ const ManagementRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: MANAGEMENT_PATH, - render: ManagementRoutes, + component: ManagementRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/network/routes.tsx b/x-pack/plugins/security_solution/public/network/routes.tsx index a094308e1371..68b1ec4ceee8 100644 --- a/x-pack/plugins/security_solution/public/network/routes.tsx +++ b/x-pack/plugins/security_solution/public/network/routes.tsx @@ -12,16 +12,19 @@ import { NetworkContainer } from './pages'; import type { SecuritySubPluginRoutes } from '../app/types'; import { SecurityPageName } from '../app/types'; import { NETWORK_PATH } from '../../common/constants'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; export const NetworkRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: NETWORK_PATH, - render: NetworkRoutes, + component: NetworkRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/overview/routes.tsx b/x-pack/plugins/security_solution/public/overview/routes.tsx index 4722ca95a581..cf42fa4cd0a3 100644 --- a/x-pack/plugins/security_solution/public/overview/routes.tsx +++ b/x-pack/plugins/security_solution/public/overview/routes.tsx @@ -19,40 +19,49 @@ import type { SecuritySubPluginRoutes } from '../app/types'; import { LandingPage } from './pages/landing'; import { StatefulOverview } from './pages/overview'; import { DetectionResponse } from './pages/detection_response'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; import { EntityAnalyticsPage } from './pages/entity_analytics'; const OverviewRoutes = () => ( - - - + + + + + ); const DetectionResponseRoutes = () => ( - - - + + + + + ); const LandingRoutes = () => ( - - - + + + + + ); const EntityAnalyticsRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: OVERVIEW_PATH, - render: OverviewRoutes, + component: OverviewRoutes, }, { path: DETECTION_RESPONSE_PATH, - render: DetectionResponseRoutes, + component: DetectionResponseRoutes, }, { path: LANDING_PATH, diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/plugins/security_solution/public/plugin.tsx index 42924f4a4088..490a68922b17 100644 --- a/x-pack/plugins/security_solution/public/plugin.tsx +++ b/x-pack/plugins/security_solution/public/plugin.tsx @@ -125,9 +125,10 @@ export class Plugin implements IPlugin = (async () => { + const startServices = async (params: AppMountParameters): Promise => { const [coreStart, startPluginsDeps] = await core.getStartServices(); const { apm } = await import('@elastic/apm-rum'); + const { SecuritySolutionTemplateWrapper } = await import('./app/home/template_wrapper'); const { savedObjectsTaggingOss, ...startPlugins } = startPluginsDeps; @@ -138,9 +139,13 @@ export class Plugin implements IPlugin SecuritySolutionTemplateWrapper, + }, }; return services; - })(); + }; core.application.register({ id: APP_UI_ID, @@ -164,7 +169,7 @@ export class Plugin implements IPlugin { useReadonlyHeader(i18n.READ_ONLY_BADGE_TOOLTIP); return ( - - - {RulesSubRoutes.map((route, index) => ( - - - - ))} - - - + + + + {RulesSubRoutes.map((route, index) => ( + + + + ))} + + + + ); }; diff --git a/x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx b/x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx index 167f2c8d6747..3f8fe1531154 100644 --- a/x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx +++ b/x-pack/plugins/security_solution/public/threat_intelligence/routes.tsx @@ -20,6 +20,7 @@ import { licenseService } from '../common/hooks/use_license'; import { SecurityPageName } from '../app/types'; import type { SecuritySubPluginRoutes } from '../app/types'; import { useSourcererDataView } from '../common/containers/sourcerer'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; const ThreatIntelligence = memo(() => { const { threatIntelligence } = useKibana().services; @@ -40,10 +41,12 @@ const ThreatIntelligence = memo(() => { return ( - - - - + + + + + + ); }); diff --git a/x-pack/plugins/security_solution/public/timelines/routes.tsx b/x-pack/plugins/security_solution/public/timelines/routes.tsx index cef6b4d9b7c6..b64c80cd2303 100644 --- a/x-pack/plugins/security_solution/public/timelines/routes.tsx +++ b/x-pack/plugins/security_solution/public/timelines/routes.tsx @@ -12,16 +12,19 @@ import { TIMELINES_PATH } from '../../common/constants'; import type { SecuritySubPluginRoutes } from '../app/types'; import { SecurityPageName } from '../app/types'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; const TimelinesRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: TIMELINES_PATH, - render: TimelinesRoutes, + component: TimelinesRoutes, }, ]; diff --git a/x-pack/plugins/security_solution/public/types.ts b/x-pack/plugins/security_solution/public/types.ts index e639e1b3cc51..1208fa2de1ab 100644 --- a/x-pack/plugins/security_solution/public/types.ts +++ b/x-pack/plugins/security_solution/public/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CoreStart } from '@kbn/core/public'; +import type { AppLeaveHandler, CoreStart } from '@kbn/core/public'; import type { HomePublicPluginSetup } from '@kbn/home-plugin/public'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { EmbeddableStart } from '@kbn/embeddable-plugin/public'; @@ -56,6 +56,7 @@ import type { Management } from './management'; import type { LandingPages } from './landing_pages'; import type { CloudSecurityPosture } from './cloud_security_posture'; import type { ThreatIntelligence } from './threat_intelligence'; +import type { SecuritySolutionTemplateWrapper } from './app/home/template_wrapper'; export interface SetupPlugins { home?: HomePublicPluginSetup; @@ -101,6 +102,15 @@ export type StartServices = CoreStart & storage: Storage; apm: ApmBase; savedObjectsTagging?: SavedObjectsTaggingApi; + onAppLeave: (handler: AppLeaveHandler) => void; + + /** + * This component will be exposed to all lazy loaded plugins, via useKibana hook. It should wrap every plugin route. + * The goal is to allow page property customization (such as `template`). + */ + securityLayout: { + getPluginWrapper: () => typeof SecuritySolutionTemplateWrapper; + }; }; export interface PluginSetup { diff --git a/x-pack/plugins/security_solution/public/users/routes.tsx b/x-pack/plugins/security_solution/public/users/routes.tsx index f316a8d4b2a9..aa894b8e6dd8 100644 --- a/x-pack/plugins/security_solution/public/users/routes.tsx +++ b/x-pack/plugins/security_solution/public/users/routes.tsx @@ -12,16 +12,19 @@ import { UsersContainer } from './pages'; import type { SecuritySubPluginRoutes } from '../app/types'; import { SecurityPageName } from '../app/types'; import { USERS_PATH } from '../../common/constants'; +import { PluginTemplateWrapper } from '../common/components/plugin_template_wrapper'; export const UsersRoutes = () => ( - - - + + + + + ); export const routes: SecuritySubPluginRoutes = [ { path: USERS_PATH, - render: UsersRoutes, + component: UsersRoutes, }, ]; From 236be263fb6976681fc078e4028407345d41b349 Mon Sep 17 00:00:00 2001 From: Marshall Main <55718608+marshallmain@users.noreply.github.com> Date: Thu, 25 Aug 2022 07:40:18 -0700 Subject: [PATCH 06/50] Update error message when history window size is too small (#139010) --- .../lib/detection_engine/rule_types/new_terms/utils.test.ts | 4 ++-- .../server/lib/detection_engine/rule_types/new_terms/utils.ts | 4 +++- .../security_and_spaces/group1/create_new_terms.ts | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts index 3c91cf413cc9..e1207eccf82b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.test.ts @@ -52,7 +52,7 @@ describe('new terms utils', () => { const historyWindowStart = 'now-7m'; const from = 'now-7m'; expect(() => validateHistoryWindowStart({ historyWindowStart, from })).toThrowError( - `History window size too small, 'historyWindowStart' must be earlier than 'from'` + `History window size is smaller than rule interval + additional lookback, 'historyWindowStart' must be earlier than 'from'` ); }); @@ -60,7 +60,7 @@ describe('new terms utils', () => { const historyWindowStart = 'now-7m'; const from = 'now-8m'; expect(() => validateHistoryWindowStart({ historyWindowStart, from })).toThrowError( - `History window size too small, 'historyWindowStart' must be earlier than 'from'` + `History window size is smaller than rule interval + additional lookback, 'historyWindowStart' must be earlier than 'from'` ); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts index 5bfa2c782026..4a87ec9edbbd 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/utils.ts @@ -41,6 +41,8 @@ export const validateHistoryWindowStart = ({ }); const parsedFrom = parseDateString({ date: from, forceNow, name: 'from' }); if (parsedHistoryWindowStart.isSameOrAfter(parsedFrom)) { - throw Error(`History window size too small, 'historyWindowStart' must be earlier than 'from'`); + throw Error( + `History window size is smaller than rule interval + additional lookback, 'historyWindowStart' must be earlier than 'from'` + ); } }; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_new_terms.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_new_terms.ts index 77a26ecf13d5..0a9073d23015 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_new_terms.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group1/create_new_terms.ts @@ -89,7 +89,7 @@ export default ({ getService }: FtrProviderContext) => { expect(response.status).to.equal(400); expect(response.body.message).to.equal( - "params invalid: History window size too small, 'historyWindowStart' must be earlier than 'from'" + "params invalid: History window size is smaller than rule interval + additional lookback, 'historyWindowStart' must be earlier than 'from'" ); }); From dacaab8b8ef6e7466cdf04deb3168cb3e6776cbf Mon Sep 17 00:00:00 2001 From: Maxim Kholod Date: Thu, 25 Aug 2022 16:43:38 +0200 Subject: [PATCH 07/50] [TIP] cover every IoC type in display_name logic (#139307) * [TIP] cover every IoC type in display_name logic * [TIP] avoid having displa name field mapping separately from value mappers * [TIP] return {field,value} object from getDisplayName * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * [TIP] rename file from displa_value into displa_name Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/types/indicator.ts | 161 +++++++++++- .../indicators_flyout.test.tsx | 4 +- .../indicators_flyout/indicators_flyout.tsx | 7 +- .../indicators_flyout_table.test.tsx | 4 +- .../indicators_table/cell_renderer.tsx | 10 +- .../indicators_table/indicators_table.tsx | 2 +- .../indicators/lib/display_name.test.ts | 79 ++++++ .../modules/indicators/lib/display_name.ts | 232 ++++++++++++++++++ .../indicators/lib/display_value.test.ts | 58 ----- .../modules/indicators/lib/display_value.ts | 89 ------- .../add_to_timeline/add_to_timeline.tsx | 9 +- 11 files changed, 480 insertions(+), 175 deletions(-) create mode 100644 x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.test.ts create mode 100644 x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.ts delete mode 100644 x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.test.ts delete mode 100644 x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.ts diff --git a/x-pack/plugins/threat_intelligence/common/types/indicator.ts b/x-pack/plugins/threat_intelligence/common/types/indicator.ts index e131063d344c..adbb1f3baa04 100644 --- a/x-pack/plugins/threat_intelligence/common/types/indicator.ts +++ b/x-pack/plugins/threat_intelligence/common/types/indicator.ts @@ -19,9 +19,30 @@ export enum RawIndicatorFieldId { UrlFull = 'threat.indicator.url.full', UrlOriginal = 'threat.indicator.url.original', UrlDomain = 'threat.indicator.url.domain', - FileMd5 = 'threat.indicator.file.hash.md5', FileSha256 = 'threat.indicator.file.hash.sha256', + FileMd5 = 'threat.indicator.file.hash.md5', + FileSha1 = 'threat.indicator.file.hash.sha1', + FileSha224 = 'threat.indicator.file.hash.sha224', + FileSha3224 = 'threat.indicator.file.hash.sha3-224', + FileSha3256 = 'threat.indicator.file.hash.sha3-256', + FileSha384 = 'threat.indicator.file.hash.sha384', + FileSha3384 = 'threat.indicator.file.hash.sha3-384', + FileSha512 = 'threat.indicator.file.hash.sha512', + FileSha3512 = 'threat.indicator.file.hash.sha3-512', + FileSha512224 = 'threat.indicator.file.hash.sha512/224', + FileSha512256 = 'threat.indicator.file.hash.sha512/256', + FileSSDeep = 'threat.indicator.file.ssdeep', + FileTlsh = 'threat.indicator.file.tlsh', + FileImpfuzzy = 'threat.indicator.file.impfuzzy', + FileImphash = 'threat.indicator.file.imphash', + FilePehash = 'threat.indicator.file.pehash', + FileVhash = 'threat.indicator.file.vhash', + X509Serial = 'threat.indicator.x509.serial_number', + WindowsRegistryKey = 'threat.indicator.registry.key', + AutonomousSystemNumber = 'threat.indicator.as.number', + MacAddress = 'threat.indicator.mac', TimeStamp = '@timestamp', + Id = '_id', } /** @@ -33,13 +54,11 @@ export interface Indicator { } /** - * Used to create new Indicators, used mainly in jest unit tests and Storybook stories. + * Used as a base to create Indicators of a specific type. Mocks are used in Jest tests and storybooks */ -export const generateMockIndicator = (): Indicator => ({ +export const generateMockBaseIndicator = (): Indicator => ({ fields: { '@timestamp': ['2022-01-01T01:01:01.000Z'], - 'threat.indicator.type': ['ipv4-addr'], - 'threat.indicator.ip': ['12.68.554.87'], 'threat.indicator.first_seen': ['2022-01-01T01:01:01.000Z'], 'threat.feed.name': ['[Filebeat] AbuseCH Malware'], }, @@ -47,25 +66,143 @@ export const generateMockIndicator = (): Indicator => ({ }); /** - * Used to create new url-type Indicators, used mainly in jest unit tests and Storybook stories. + * Used to create an Indicator where the type is not important. */ +export const generateMockIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['ipv4-addr']; + indicator.fields['threat.indicator.ip'] = ['12.68.554.87']; + + return indicator; +}; + +export const generateMockIpIndicator = generateMockIndicator; + export const generateMockUrlIndicator = (): Indicator => { - const indicator = generateMockIndicator(); + const indicator = generateMockBaseIndicator(); indicator.fields['threat.indicator.type'] = ['url']; - indicator.fields['threat.indicator.url.full'] = ['https://google.com']; + indicator.fields['threat.indicator.url.original'] = ['https://google.com']; return indicator; }; -/** - * Used to create new file-type Indicators, used mainly in jest unit tests and Storybook stories. - */ export const generateMockFileIndicator = (): Indicator => { - const indicator = generateMockIndicator(); + const indicator = generateMockBaseIndicator(); indicator.fields['threat.indicator.type'] = ['file']; indicator.fields['threat.indicator.file.hash.sha256'] = ['sample_sha256_hash']; + indicator.fields['threat.indicator.file.hash.md5'] = ['sample_md5_hash']; + indicator.fields['threat.indicator.file.hash.sha1'] = ['sample_sha1_hash']; + + return indicator; +}; + +export const generateMockFileMd5Indicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['file']; + indicator.fields['threat.indicator.file.hash.md5'] = ['sample_md5_hash']; + indicator.fields['threat.indicator.file.hash.sha1'] = ['sample_sha1_hash']; + + return indicator; +}; + +export const generateMockEmailAddrIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['email-addr']; + indicator.fields['threat.indicator.email.address'] = ['sample@example.com']; + + return indicator; +}; + +export const generateMockDomainIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['domain']; + indicator.fields['threat.indicator.url.domain'] = ['google.com']; + + return indicator; +}; + +export const generateMockDomainNameIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['domain-name']; + indicator.fields['threat.indicator.url.domain'] = ['google.com']; + + return indicator; +}; + +export const generateMockX509CertificateIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['x509-certificate']; + indicator.fields['threat.indicator.x509.serial_number'] = ['sample_serial_number']; + + return indicator; +}; + +export const generateMockX509SerialIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['x509 Serial']; + indicator.fields['threat.indicator.x509.serial_number'] = ['sample_serial_bla']; + + return indicator; +}; + +export const generateMockUnknownIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['unknown']; + indicator.fields._id = ['sample_id']; + + return indicator; +}; + +export const generateMockEmailIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['email']; + indicator.fields['threat.indicator.email.address'] = ['sample@example.com']; + + return indicator; +}; + +export const generateMockEmailMessageIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['email-message']; + + return indicator; +}; + +export const generateMockWindowsRegistryKeyIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['windows-registry-key']; + indicator.fields['threat.indicator.registry.key'] = ['sample_registry_key']; + + return indicator; +}; + +export const generateMockAutonomousSystemIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['autonomous-system']; + indicator.fields['threat.indicator.as.number'] = ['sample_as_number']; + + return indicator; +}; + +export const generateMockMacAddressIndicator = (): Indicator => { + const indicator = generateMockBaseIndicator(); + + indicator.fields['threat.indicator.type'] = ['mac-addr']; + indicator.fields['threat.indicator.mac'] = ['sample_mac_address']; return indicator; }; diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.test.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.test.tsx index 4e22bd0d11cc..397d3f3522af 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.test.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.test.tsx @@ -15,7 +15,7 @@ import { mockUiSetting } from '../../../../common/mocks/mock_kibana_ui_settings_ import { TestProvidersComponent } from '../../../../common/mocks/test_providers'; import { generateFieldTypeMap } from '../../../../common/mocks/mock_field_type_map'; import { unwrapValue } from '../../lib/unwrap_value'; -import { displayValue } from '../../lib/display_value'; +import { getDisplayName } from '../../lib/display_name'; const mockIndicator = generateMockIndicator(); const mockFieldTypesMap = generateFieldTypeMap(); @@ -33,7 +33,7 @@ describe('', () => { ); expect(getByTestId(TITLE_TEST_ID).innerHTML).toContain( - `Indicator: ${displayValue(mockIndicator)}` + `Indicator: ${getDisplayName(mockIndicator).value}` ); expect(getByTestId(SUBTITLE_TEST_ID).innerHTML).toContain( `First seen: ${dateFormatter( diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.tsx index 84bb92d0b572..b93dc5a11cb9 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout/indicators_flyout.tsx @@ -24,7 +24,7 @@ import { Indicator, RawIndicatorFieldId } from '../../../../../common/types/indi import { IndicatorsFlyoutJson } from '../indicators_flyout_json/indicators_flyout_json'; import { IndicatorsFlyoutTable } from '../indicators_flyout_table/indicators_flyout_table'; import { unwrapValue } from '../../lib/unwrap_value'; -import { displayValue } from '../../lib/display_value'; +import { getDisplayName } from '../../lib/display_name'; export const TITLE_TEST_ID = 'tiIndicatorFlyoutTitle'; export const SUBTITLE_TEST_ID = 'tiIndicatorFlyoutSubtitle'; @@ -103,7 +103,8 @@ export const IndicatorsFlyout: VFC = ({ ); const firstSeen: string = unwrapValue(indicator, RawIndicatorFieldId.FirstSeen) as string; - const value = displayValue(indicator) || EMPTY_VALUE; + const displayName = getDisplayName(indicator); + const displayNameValue = displayName.value || EMPTY_VALUE; const flyoutTitleId = useGeneratedHtmlId({ prefix: 'simpleFlyoutTitle', }); @@ -116,7 +117,7 @@ export const IndicatorsFlyout: VFC = ({ diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout_table/indicators_flyout_table.test.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout_table/indicators_flyout_table.test.tsx index e89a84e8b85a..4497fcc538ba 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout_table/indicators_flyout_table.test.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_flyout_table/indicators_flyout_table.test.tsx @@ -20,7 +20,7 @@ import { TABLE_TEST_ID, } from './indicators_flyout_table'; import { unwrapValue } from '../../lib/unwrap_value'; -import { displayValue } from '../../lib/display_value'; +import { getDisplayName } from '../../lib/display_name'; const mockIndicator: Indicator = generateMockIndicator(); const mockFieldTypesMap = generateFieldTypeMap(); @@ -37,7 +37,7 @@ describe('', () => { expect(getByText(RawIndicatorFieldId.Feed)).toBeInTheDocument(); - expect(getByText(displayValue(mockIndicator) as string)).toBeInTheDocument(); + expect(getByText(getDisplayName(mockIndicator).value as string)).toBeInTheDocument(); expect( getByText(unwrapValue(mockIndicator, RawIndicatorFieldId.Feed) as string) diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/cell_renderer.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/cell_renderer.tsx index 8fa7c22e0bc3..7c88dd7c3496 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/cell_renderer.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/cell_renderer.tsx @@ -12,13 +12,13 @@ import React from 'react'; import { useKibana } from '../../../../hooks/use_kibana'; import { EMPTY_VALUE } from '../../../../../common/constants'; import { Indicator } from '../../../../../common/types/indicator'; -import { displayValue } from '../../lib/display_value'; +import { getDisplayName } from '../../lib/display_name'; import { IndicatorField } from '../indicator_field/indicator_field'; import { IndicatorsTableContext } from './context'; import { ActionsRowCell } from './actions_row_cell'; export enum ComputedIndicatorFieldId { - DisplayValue = 'display_value', + DisplayName = 'display_name', } export const cellRendererFactory = (from: number) => { @@ -59,8 +59,10 @@ export const cellRendererFactory = (from: number) => { return ; } - if (columnId === ComputedIndicatorFieldId.DisplayValue) { - return displayValue(indicator) || EMPTY_VALUE; + if (columnId === ComputedIndicatorFieldId.DisplayName) { + const displayName = getDisplayName(indicator); + const displayNameValue = displayName.value; + return displayNameValue || EMPTY_VALUE; } return ; diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/indicators_table.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/indicators_table.tsx index a0a78e6d9278..128da1d6c21b 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/indicators_table.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/indicators_table/indicators_table.tsx @@ -36,7 +36,7 @@ const defaultColumns: EuiDataGridColumn[] = [ }), }, { - id: ComputedIndicatorFieldId.DisplayValue, + id: ComputedIndicatorFieldId.DisplayName, displayAsText: i18n.translate('xpack.threatIntelligence.indicator.table.indicatorColumTitle', { defaultMessage: 'Indicator', }), diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.test.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.test.ts new file mode 100644 index 000000000000..6088a1669b62 --- /dev/null +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.test.ts @@ -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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + generateMockBaseIndicator, + generateMockFileIndicator, + generateMockIpIndicator, + generateMockUrlIndicator, + generateMockFileMd5Indicator, + generateMockDomainIndicator, + generateMockEmailAddrIndicator, + generateMockDomainNameIndicator, + generateMockX509CertificateIndicator, + generateMockX509SerialIndicator, + generateMockUnknownIndicator, + generateMockWindowsRegistryKeyIndicator, + generateMockAutonomousSystemIndicator, + generateMockMacAddressIndicator, + Indicator, + RawIndicatorFieldId, +} from '../../../../common/types/indicator'; +import { getDisplayName } from './display_name'; + +type ExpectedIndicatorValue = string | null; + +const cases: Array<[Indicator, ExpectedIndicatorValue]> = [ + [generateMockIpIndicator(), '12.68.554.87'], + [generateMockUrlIndicator(), 'https://google.com'], + [generateMockFileIndicator(), 'sample_sha256_hash'], + [generateMockFileMd5Indicator(), 'sample_md5_hash'], + [generateMockEmailAddrIndicator(), 'sample@example.com'], + [generateMockDomainIndicator(), 'google.com'], + [generateMockDomainNameIndicator(), 'google.com'], + [generateMockX509CertificateIndicator(), 'sample_serial_number'], + [generateMockX509SerialIndicator(), 'sample_serial_bla'], + [generateMockUnknownIndicator(), 'sample_id'], + [generateMockWindowsRegistryKeyIndicator(), 'sample_registry_key'], + [generateMockAutonomousSystemIndicator(), 'sample_as_number'], + [generateMockMacAddressIndicator(), 'sample_mac_address'], + + // Indicator with no fields should yield null as a display value + [{ fields: {} }, null], + + // Same for an empty object + [{} as any, null], + + // And falsy value + [null, null], +]; + +describe('getDisplayName()', () => { + describe.each<[Indicator, ExpectedIndicatorValue]>(cases)( + '%s', + (indicator, expectedDisplayValue) => { + it(`should render the indicator as ${expectedDisplayValue}`, () => { + expect(getDisplayName(indicator).value).toEqual(expectedDisplayValue); + }); + } + ); +}); + +describe('displayValueField()', () => { + it('should return correct RawIndicatorFieldId for valid field', () => { + const mockIndicator = generateMockIpIndicator(); + const result = getDisplayName(mockIndicator); + expect(result.field).toEqual(RawIndicatorFieldId.Ip); + }); + + it('should return null for invalid field', () => { + const mockIndicator = generateMockBaseIndicator(); + mockIndicator.fields['threat.indicator.type'] = ['abc']; + const result = getDisplayName(mockIndicator); + expect(result.field).toEqual(RawIndicatorFieldId.Id); + }); +}); diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.ts new file mode 100644 index 000000000000..2a41c9e6d30e --- /dev/null +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_name.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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Indicator, RawIndicatorFieldId } from '../../../../common/types/indicator'; +import { unwrapValue } from './unwrap_value'; + +type IndicatorDisplayName = [RawIndicatorFieldId, string | null]; +interface IndicatorDisplayNameAsObject { + field: RawIndicatorFieldId; + value: string | null; +} +type IndicatorDisplayNameExtractor = (indicator: Indicator) => IndicatorDisplayName; +type IndicatorTypePredicate = (indicatorType: string | null) => boolean; + +type MapperRule = [predicate: IndicatorTypePredicate, extract: IndicatorDisplayNameExtractor]; + +/** + * Predicates to help identify indicator by type + */ +const isIpIndicator: IndicatorTypePredicate = (indicatorType) => + !!indicatorType && ['ipv4-addr', 'ipv6-addr'].includes(indicatorType); + +const isFileIndicator: IndicatorTypePredicate = (indicatorType) => indicatorType === 'file'; +const isUrlIndicator: IndicatorTypePredicate = (indicatorType) => indicatorType === 'url'; +const isEmailAddress: IndicatorTypePredicate = (indicatorType) => indicatorType === 'email-addr'; +const isDomain: IndicatorTypePredicate = (indicatorType) => + !!indicatorType && ['domain', 'domain-name'].includes(indicatorType); +const isX509Certificate: IndicatorTypePredicate = (indicatorType) => + !!indicatorType && ['x509-certificate', 'x509 serial'].includes(indicatorType); +const isUnknownIndicator: IndicatorTypePredicate = (indicatorType) => + !!indicatorType && ['unknown', 'email', 'email-message'].includes(indicatorType); +const isWindowsRegistryKey: IndicatorTypePredicate = (indicatorType) => + indicatorType === 'windows-registry-key'; +const isAutonomousSystem: IndicatorTypePredicate = (indicatorType) => + indicatorType === 'autonomous-system'; +const isMacAddress: IndicatorTypePredicate = (indicatorType) => indicatorType === 'mac-addr'; + +/** + * Display value extraction logic + */ +const extractIp: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.Ip, + unwrapValue(indicator, RawIndicatorFieldId.Ip), +]; + +const extractUrl: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.UrlOriginal, + unwrapValue(indicator, RawIndicatorFieldId.UrlOriginal), +]; + +const extractId: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.Id, + unwrapValue(indicator, RawIndicatorFieldId.Id), +]; + +const extractFile: IndicatorDisplayNameExtractor = (indicator: Indicator) => { + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha256)) { + return [RawIndicatorFieldId.FileSha256, unwrapValue(indicator, RawIndicatorFieldId.FileSha256)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileMd5)) { + return [RawIndicatorFieldId.FileMd5, unwrapValue(indicator, RawIndicatorFieldId.FileMd5)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha1)) { + return [RawIndicatorFieldId.FileSha1, unwrapValue(indicator, RawIndicatorFieldId.FileSha1)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha512)) { + return [RawIndicatorFieldId.FileSha512, unwrapValue(indicator, RawIndicatorFieldId.FileSha512)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha224)) { + return [RawIndicatorFieldId.FileSha224, unwrapValue(indicator, RawIndicatorFieldId.FileSha224)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha384)) { + return [RawIndicatorFieldId.FileSha384, unwrapValue(indicator, RawIndicatorFieldId.FileSha384)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha3224)) { + return [ + RawIndicatorFieldId.FileSha3224, + unwrapValue(indicator, RawIndicatorFieldId.FileSha3224), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha3256)) { + return [ + RawIndicatorFieldId.FileSha3256, + unwrapValue(indicator, RawIndicatorFieldId.FileSha3256), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha3384)) { + return [ + RawIndicatorFieldId.FileSha3384, + unwrapValue(indicator, RawIndicatorFieldId.FileSha3384), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha3512)) { + return [ + RawIndicatorFieldId.FileSha3512, + unwrapValue(indicator, RawIndicatorFieldId.FileSha3512), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha512224)) { + return [ + RawIndicatorFieldId.FileSha512224, + unwrapValue(indicator, RawIndicatorFieldId.FileSha512224), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSha512256)) { + return [ + RawIndicatorFieldId.FileSha512256, + unwrapValue(indicator, RawIndicatorFieldId.FileSha512256), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileSSDeep)) { + return [RawIndicatorFieldId.FileSSDeep, unwrapValue(indicator, RawIndicatorFieldId.FileSSDeep)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileTlsh)) { + return [RawIndicatorFieldId.FileTlsh, unwrapValue(indicator, RawIndicatorFieldId.FileTlsh)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileImpfuzzy)) { + return [ + RawIndicatorFieldId.FileImpfuzzy, + unwrapValue(indicator, RawIndicatorFieldId.FileImpfuzzy), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileImphash)) { + return [ + RawIndicatorFieldId.FileImphash, + unwrapValue(indicator, RawIndicatorFieldId.FileImphash), + ]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FilePehash)) { + return [RawIndicatorFieldId.FilePehash, unwrapValue(indicator, RawIndicatorFieldId.FilePehash)]; + } + + if (unwrapValue(indicator, RawIndicatorFieldId.FileVhash)) { + return [RawIndicatorFieldId.FileVhash, unwrapValue(indicator, RawIndicatorFieldId.FileVhash)]; + } + + return extractId(indicator); +}; + +const extractEmailAddress: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.EmailAddress, + unwrapValue(indicator, RawIndicatorFieldId.EmailAddress), +]; + +const extractDomain: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.UrlDomain, + unwrapValue(indicator, RawIndicatorFieldId.UrlDomain), +]; + +const extractX509Serial: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.X509Serial, + unwrapValue(indicator, RawIndicatorFieldId.X509Serial), +]; + +const extractWindowsRegistryKey: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.WindowsRegistryKey, + unwrapValue(indicator, RawIndicatorFieldId.WindowsRegistryKey), +]; + +const extractAutonomousSystemNumber: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.AutonomousSystemNumber, + unwrapValue(indicator, RawIndicatorFieldId.AutonomousSystemNumber), +]; + +const extractMacAddress: IndicatorDisplayNameExtractor = (indicator: Indicator) => [ + RawIndicatorFieldId.MacAddress, + unwrapValue(indicator, RawIndicatorFieldId.MacAddress), +]; + +/** + * Pairs rule condition with display value extraction logic + */ +const rulesArray: MapperRule[] = [ + [isIpIndicator, extractIp], + [isUrlIndicator, extractUrl], + [isFileIndicator, extractFile], + [isUnknownIndicator, extractId], + [isEmailAddress, extractEmailAddress], + [isDomain, extractDomain], + [isX509Certificate, extractX509Serial], + [isWindowsRegistryKey, extractWindowsRegistryKey], + [isAutonomousSystem, extractAutonomousSystemNumber], + [isMacAddress, extractMacAddress], +]; + +/** + * Finds display value mapping function for given indicatorType + */ +const findMappingRule = (indicatorType: string | null): IndicatorDisplayNameExtractor => { + const [_, extract = extractId] = rulesArray.find(([check]) => check(indicatorType)) || []; + return extract; +}; + +/** + * Cached rules for indicator types + */ +const rules: Record = {}; + +/** + * Find and return indicator display name structure {field, value} + */ +export const getDisplayName = (indicator: Indicator): IndicatorDisplayNameAsObject => { + const indicatorType = (unwrapValue(indicator, RawIndicatorFieldId.Type) || '').toLowerCase(); + + if (!rules[indicatorType]) { + rules[indicatorType] = findMappingRule(indicatorType); + } + + const [field, value] = rules[indicatorType](indicator); + + return { field, value }; +}; diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.test.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.test.ts deleted file mode 100644 index 1b1e6f3085d2..000000000000 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.test.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - generateMockFileIndicator, - generateMockIndicator, - generateMockUrlIndicator, - Indicator, - RawIndicatorFieldId, -} from '../../../../common/types/indicator'; -import { displayField, displayValue } from './display_value'; - -type ExpectedIndicatorValue = string | null; - -const cases: Array<[Indicator, ExpectedIndicatorValue]> = [ - [generateMockIndicator(), '12.68.554.87'], - [generateMockUrlIndicator(), 'https://google.com'], - [generateMockFileIndicator(), 'sample_sha256_hash'], - - // Indicator with no fields should yield null as a display value - [{ fields: {} }, null], - - // Same for an empty object - [{} as any, null], - - // And falsy value - [null, null], -]; - -describe('displayValue()', () => { - describe.each<[Indicator, ExpectedIndicatorValue]>(cases)( - '%s', - (indicator, expectedDisplayValue) => { - it(`should render the indicator as ${expectedDisplayValue}`, () => { - expect(displayValue(indicator)).toEqual(expectedDisplayValue); - }); - } - ); -}); - -describe('displayValueField()', () => { - it('should return correct RawIndicatorFieldId for valid field', () => { - const mockIndicator = generateMockIndicator(); - const result = displayField(mockIndicator); - expect(result).toEqual(RawIndicatorFieldId.Ip); - }); - - it('should return null for invalid field', () => { - const mockIndicator = generateMockIndicator(); - mockIndicator.fields['threat.indicator.type'] = ['abc']; - const result = displayField(mockIndicator); - expect(result).toBeUndefined(); - }); -}); diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.ts b/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.ts deleted file mode 100644 index f661fd460311..000000000000 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/lib/display_value.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Indicator, RawIndicatorFieldId } from '../../../../common/types/indicator'; -import { unwrapValue } from './unwrap_value'; - -export type IndicatorValueExtractor = (indicator: Indicator) => string | null; -export type IndicatorTypePredicate = (indicatorType: string | null) => boolean; - -type MapperRule = [predicate: IndicatorTypePredicate, extract: IndicatorValueExtractor]; - -/** - * Predicates to help identify indicator by type - */ -const isIpIndicator: IndicatorTypePredicate = (indicatorType) => - !!indicatorType && ['ipv4-addr', 'ipv6-addr'].includes(indicatorType); - -const isFileIndicator: IndicatorTypePredicate = (indicatorType) => indicatorType === 'file'; -const isUrlIndicator: IndicatorTypePredicate = (indicatorType) => indicatorType === 'url'; - -/** - * Display value extraction logic - */ -const extractStub = () => null; - -const extractIp = (indicator: Indicator) => unwrapValue(indicator, RawIndicatorFieldId.Ip); - -const extractUrl = (indicator: Indicator) => unwrapValue(indicator, RawIndicatorFieldId.UrlFull); - -const extractFile = (indicator: Indicator) => - unwrapValue(indicator, RawIndicatorFieldId.FileSha256); - -/** - * Pairs rule condition with display value extraction logic - */ -const rulesArray: MapperRule[] = [ - [isIpIndicator, extractIp], - [isUrlIndicator, extractUrl], - [isFileIndicator, extractFile], -]; - -/** - * Finds display value mapping function for given indicatorType - */ -const findMappingRule = (indicatorType: string | null): IndicatorValueExtractor => { - const [_, extract = extractStub] = rulesArray.find(([check]) => check(indicatorType)) || []; - return extract; -}; - -/** - * Cached rules for indicator types - */ -const rules: Record = {}; - -/** - * Mapping between the indicator type and the {@link RawIndicatorFieldId}. - */ -const indicatorTypeToField: { [id: string]: RawIndicatorFieldId } = { - file: RawIndicatorFieldId.FileSha256, - 'ipv4-addr': RawIndicatorFieldId.Ip, - 'ipv6-addr': RawIndicatorFieldId.Ip, - url: RawIndicatorFieldId.UrlFull, -}; - -/** - * Find and return indicator display value field - */ -export const displayField = (indicator: Indicator): string | null => { - const indicatorType = (unwrapValue(indicator, RawIndicatorFieldId.Type) || '').toLowerCase(); - - return indicatorTypeToField[indicatorType]; -}; - -/** - * Find and return indicator display value, if possible - */ -export const displayValue = (indicator: Indicator): string | null => { - const indicatorType = (unwrapValue(indicator, RawIndicatorFieldId.Type) || '').toLowerCase(); - - if (!rules[indicatorType]) { - rules[indicatorType] = findMappingRule(indicatorType); - } - - return rules[indicatorType](indicator); -}; diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline/add_to_timeline.tsx b/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline/add_to_timeline.tsx index 21f4c35819cc..482f76b7f00b 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline/add_to_timeline.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline/add_to_timeline.tsx @@ -10,7 +10,7 @@ import { DataProvider, QueryOperator } from '@kbn/timelines-plugin/common'; import { AddToTimelineButtonProps } from '@kbn/timelines-plugin/public'; import { EuiButtonEmpty, EuiButtonIcon } from '@elastic/eui/src/components/button'; import { EMPTY_VALUE } from '../../../../../common/constants'; -import { displayField, displayValue } from '../../../indicators/lib/display_value'; +import { getDisplayName } from '../../../indicators/lib/display_name'; import { ComputedIndicatorFieldId } from '../../../indicators/components/indicators_table/cell_renderer'; import { useKibana } from '../../../../hooks/use_kibana'; import { unwrapValue } from '../../../indicators/lib/unwrap_value'; @@ -53,9 +53,10 @@ export const AddToTimeline: VFC = ({ data, field, component, let value: string | null; if (typeof data === 'string') { value = data; - } else if (field === ComputedIndicatorFieldId.DisplayValue) { - field = displayField(data) || ''; - value = displayValue(data); + } else if (field === ComputedIndicatorFieldId.DisplayName) { + const displayName = getDisplayName(data); + field = displayName.field; + value = displayName.value; } else { value = unwrapValue(data, field as RawIndicatorFieldId); } From 8991e046a2710f71db3a067197f1329f6438a8b4 Mon Sep 17 00:00:00 2001 From: doakalexi <109488926+doakalexi@users.noreply.github.com> Date: Thu, 25 Aug 2022 10:48:14 -0400 Subject: [PATCH 08/50] [ResponseOps][Alerting] Unable to upgrade to 8.4.0 when I have snoozed rules (#139427) * Adding migration * Removing timer * Adding functional test * Adding another test --- .../server/saved_objects/migrations.test.ts | 27 +++++++++++++ .../server/saved_objects/migrations.ts | 18 +++++++++ .../spaces_only/tests/alerting/migrations.ts | 20 ++++++++++ .../functional/es_archives/alerts/data.json | 38 +++++++++++++++++++ .../es_archives/alerts/mappings.json | 3 ++ 5 files changed, 106 insertions(+) diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts b/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts index bbf93f85450c..be9bee763499 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations.test.ts @@ -2397,6 +2397,33 @@ describe('successful migrations', () => { }); }); + describe('8.4.1', () => { + test('removes isSnoozedUntil', () => { + const migration841 = getMigrations(encryptedSavedObjectsSetup, {}, isPreconfigured)[ + '8.4.1' + ]; + const mutedAlert = getMockData( + { + isSnoozedUntil: '1970-01-02T00:00:00.000Z', + }, + true + ); + expect(mutedAlert.attributes.isSnoozedUntil).toBeTruthy(); + const migratedAlert841 = migration841(mutedAlert, migrationContext); + + expect(migratedAlert841.attributes.isSnoozedUntil).toBeFalsy(); + }); + + test('works as expected if isSnoozedUntil is not populated', () => { + const migration841 = getMigrations(encryptedSavedObjectsSetup, {}, isPreconfigured)[ + '8.4.1' + ]; + const mutedAlert = getMockData({}, true); + expect(mutedAlert.attributes.isSnoozedUntil).toBeFalsy(); + expect(() => migration841(mutedAlert, migrationContext)).not.toThrowError(); + }); + }); + describe('Metrics Inventory Threshold rule', () => { test('Migrates incorrect action group spelling', () => { const migration800 = getMigrations(encryptedSavedObjectsSetup, {}, isPreconfigured)[ diff --git a/x-pack/plugins/alerting/server/saved_objects/migrations.ts b/x-pack/plugins/alerting/server/saved_objects/migrations.ts index 0873ba3e5c93..20ebb7b4eb8e 100644 --- a/x-pack/plugins/alerting/server/saved_objects/migrations.ts +++ b/x-pack/plugins/alerting/server/saved_objects/migrations.ts @@ -170,6 +170,12 @@ export function getMigrations( pipeMigrations(addSearchType, removeInternalTags, convertSnoozes) ); + const migrationRules841 = createEsoMigration( + encryptedSavedObjects, + (doc: SavedObjectUnsanitizedDoc): doc is SavedObjectUnsanitizedDoc => true, + pipeMigrations(removeIsSnoozedUntil) + ); + const migrationRules850 = createEsoMigration( encryptedSavedObjects, (doc): doc is SavedObjectUnsanitizedDoc => isEsQueryRuleType(doc), @@ -189,6 +195,7 @@ export function getMigrations( '8.0.1': executeMigrationWithErrorHandling(migrationRules801, '8.0.1'), '8.2.0': executeMigrationWithErrorHandling(migrationRules820, '8.2.0'), '8.3.0': executeMigrationWithErrorHandling(migrationRules830, '8.3.0'), + '8.4.1': executeMigrationWithErrorHandling(migrationRules841, '8.4.1'), '8.5.0': executeMigrationWithErrorHandling(migrationRules850, '8.5.0'), }, getSearchSourceMigrations(encryptedSavedObjects, searchSourceMigrations) @@ -1062,3 +1069,14 @@ function getSearchSourceMigrations( } return filteredMigrations; } + +function removeIsSnoozedUntil( + doc: SavedObjectUnsanitizedDoc +): SavedObjectUnsanitizedDoc { + return { + ...doc, + attributes: { + ...(omit(doc.attributes, ['isSnoozedUntil']) as RawRule), + }, + }; +} diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts index 0f2752c87ee5..9edb414e39c7 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/migrations.ts @@ -444,6 +444,26 @@ export default function createGetTests({ getService }: FtrProviderContext) { expect(response.body._source?.alert?.tags).to.eql(['test-tag-1', 'foo-tag']); }); + it('8.4.1 removes IsSnoozedUntil', async () => { + const searchResult = await es.search( + { + index: '.kibana', + body: { + query: { + term: { + _id: 'alert:4d973df0-23df-11ed-8ae4-e988ad0f6fa7', + }, + }, + }, + }, + { meta: true } + ); + + expect(searchResult.statusCode).to.equal(200); + const hit = searchResult.body.hits.hits[0]; + expect((hit!._source!.alert! as RawRule).isSnoozedUntil).to.be(undefined); + }); + it('8.5.0 removes runtime and field params from older ES Query rules', async () => { const response = await es.get<{ alert: { diff --git a/x-pack/test/functional/es_archives/alerts/data.json b/x-pack/test/functional/es_archives/alerts/data.json index 90a2c15777ff..0129bb2f4729 100644 --- a/x-pack/test/functional/es_archives/alerts/data.json +++ b/x-pack/test/functional/es_archives/alerts/data.json @@ -1194,3 +1194,41 @@ } } } + +{ + "type": "doc", + "value": { + "id": "alert:4d973df0-23df-11ed-8ae4-e988ad0f6fa7", + "index": ".kibana_1", + "source": { + "alert": { + "alertTypeId": "example.always-firing", + "apiKey": null, + "apiKeyOwner": null, + "consumer": "alerts", + "createdAt": "2022-08-24T19:02:30.889Z", + "createdBy": "elastic", + "enabled": false, + "muteAll": false, + "mutedInstanceIds": [], + "name": "remove snoozed", + "params": {}, + "schedule": { + "interval": "1m" + }, + "scheduledTaskId": null, + "tags": [], + "throttle": null, + "updatedBy": "elastic", + "isSnoozedUntil": "2022-08-24T19:05:49.817Z" + }, + "migrationVersion": { + "alert": "8.3.0" + }, + "references": [ + ], + "type": "alert", + "updated_at": "2022-08-24T19:05:50.159Z" + } + } +} diff --git a/x-pack/test/functional/es_archives/alerts/mappings.json b/x-pack/test/functional/es_archives/alerts/mappings.json index babc00babc83..0da2b5149951 100644 --- a/x-pack/test/functional/es_archives/alerts/mappings.json +++ b/x-pack/test/functional/es_archives/alerts/mappings.json @@ -172,6 +172,9 @@ }, "updatedBy": { "type": "keyword" + }, + "isSnoozedUntil": { + "type": "date" } } }, From 7b4b2be2a668341304e9807d05ab7e4e06e8fc56 Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Thu, 25 Aug 2022 17:24:28 +0200 Subject: [PATCH 09/50] Task health calculation never returns Error or Warning but logs the HealthStatus (#139274) * Task health calculation never returns Error or Warning but logs the HealthStatus. --- .../monitoring/task_run_statistics.test.ts | 32 ++++++++++++++++--- .../server/monitoring/task_run_statistics.ts | 6 ++-- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts index 32fe9bf60466..39b262d05f41 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts @@ -362,18 +362,40 @@ describe('Task Run Statistics', () => { // Success, Success, Success, Failed { Success: 75, RetryScheduled: 0, Failed: 25, status: 'OK' }, // Success, Success, Success, Failed, Failed - { Success: 60, RetryScheduled: 0, Failed: 40, status: 'warn' }, + { Success: 60, RetryScheduled: 0, Failed: 40, status: 'OK' }, // Success, Success, Failed, Failed, Failed - { Success: 40, RetryScheduled: 0, Failed: 60, status: 'error' }, + { Success: 40, RetryScheduled: 0, Failed: 60, status: 'OK' }, // Success, Failed, Failed, Failed, RetryScheduled - { Success: 20, RetryScheduled: 20, Failed: 60, status: 'error' }, + { Success: 20, RetryScheduled: 20, Failed: 60, status: 'OK' }, // Failed, Failed, Failed, RetryScheduled, RetryScheduled - { Success: 0, RetryScheduled: 40, Failed: 60, status: 'error' }, + { Success: 0, RetryScheduled: 40, Failed: 60, status: 'OK' }, // Failed, Failed, RetryScheduled, RetryScheduled, Success - { Success: 20, RetryScheduled: 40, Failed: 40, status: 'warn' }, + { Success: 20, RetryScheduled: 40, Failed: 40, status: 'OK' }, // Failed, RetryScheduled, RetryScheduled, Success, Success { Success: 40, RetryScheduled: 40, Failed: 20, status: 'OK' }, ]); + + expect(logger.debug).toHaveBeenCalledTimes(5); + expect(logger.debug).toHaveBeenNthCalledWith( + 1, + 'Health Status warn threshold has been exceeded, resultFrequencySummary.Failed (40) is greater than warn_threshold (39)' + ); + expect(logger.debug).toHaveBeenNthCalledWith( + 2, + 'Health Status error threshold has been exceeded, resultFrequencySummary.Failed (60) is greater than error_threshold (59)' + ); + expect(logger.debug).toHaveBeenNthCalledWith( + 3, + 'Health Status error threshold has been exceeded, resultFrequencySummary.Failed (60) is greater than error_threshold (59)' + ); + expect(logger.debug).toHaveBeenNthCalledWith( + 4, + 'Health Status error threshold has been exceeded, resultFrequencySummary.Failed (60) is greater than error_threshold (59)' + ); + expect(logger.debug).toHaveBeenNthCalledWith( + 5, + 'Health Status warn threshold has been exceeded, resultFrequencySummary.Failed (40) is greater than warn_threshold (39)' + ); resolve(); } catch (e) { reject(e); diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts index 446467ffe0b6..0c6063af1928 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts @@ -434,14 +434,12 @@ function getHealthStatus( if (resultFrequencySummary.Failed > executionErrorThreshold.warn_threshold) { if (resultFrequencySummary.Failed > executionErrorThreshold.error_threshold) { logger.debug( - `setting HealthStatus.Error because resultFrequencySummary.Failed (${resultFrequencySummary.Failed}) > error_threshold (${executionErrorThreshold.error_threshold})` + `Health Status error threshold has been exceeded, resultFrequencySummary.Failed (${resultFrequencySummary.Failed}) is greater than error_threshold (${executionErrorThreshold.error_threshold})` ); - return HealthStatus.Error; } else { logger.debug( - `setting HealthStatus.Warning because resultFrequencySummary.Failed (${resultFrequencySummary.Failed}) > warn_threshold (${executionErrorThreshold.warn_threshold})` + `Health Status warn threshold has been exceeded, resultFrequencySummary.Failed (${resultFrequencySummary.Failed}) is greater than warn_threshold (${executionErrorThreshold.warn_threshold})` ); - return HealthStatus.Warning; } } From 583c11bc475dd5e5d5af7bee933c042b68ce9e06 Mon Sep 17 00:00:00 2001 From: Wafaa Nasr Date: Thu, 25 Aug 2022 17:28:01 +0200 Subject: [PATCH 10/50] fix overwriting icons when closing modal (#139470) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../import_data_modal/index.test.tsx | 48 +++++++++++++++++++ .../components/import_data_modal/index.tsx | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx index 9864941ebcbe..515019785534 100644 --- a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.test.tsx @@ -118,6 +118,54 @@ describe('ImportDataModal', () => { expect(importData).toHaveBeenCalled(); expect(closeModal).toHaveBeenCalled(); + expect(overwriteCheckbox.checked).toBeFalsy(); + expect(exceptionCheckbox.checked).toBeFalsy(); + }); + test('should uncheck the selected checkboxes after closing the Flyout', async () => { + const { queryByTestId, getAllByRole } = render( + 'successMessage')} + title="title" + showExceptionsCheckBox={true} + /> + ); + + const closeButton = getAllByRole('button')[0]; + + const overwriteCheckbox: HTMLInputElement = queryByTestId( + 'import-data-modal-checkbox-label' + ) as HTMLInputElement; + const exceptionCheckbox: HTMLInputElement = queryByTestId( + 'import-data-modal-exceptions-checkbox-label' + ) as HTMLInputElement; + + await waitFor(() => fireEvent.click(overwriteCheckbox)); + await waitFor(() => fireEvent.click(exceptionCheckbox)); + + await waitFor(() => + fireEvent.change(queryByTestId('rule-file-picker') as HTMLInputElement, { + target: { files: [file] }, + }) + ); + expect(overwriteCheckbox.checked).toBeTruthy(); + expect(exceptionCheckbox.checked).toBeTruthy(); + + await waitFor(() => { + fireEvent.click(closeButton as HTMLButtonElement); + }); + expect(closeModal).toHaveBeenCalled(); + expect(overwriteCheckbox.checked).toBeFalsy(); expect(exceptionCheckbox.checked).toBeFalsy(); }); diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx index f3223709a0ce..822d4b7cc794 100644 --- a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx @@ -138,7 +138,7 @@ export const ImportDataModalComponent = ({ return ( <> {showModal && ( - + {title} From 9307cacf7de3a03534a79e5d08ca0c9ec44597ca Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 25 Aug 2022 17:39:50 +0200 Subject: [PATCH 11/50] Bump redux (4.2.0), reselect (4.1.6), @reduxjs/toolkit (1.7.2), redux-thunk (2.4.1) and immer (9.0.15) (#138818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgrade Redux to 4.2.0 and Reselect to 4.1.6 * Fix typing in timelines TypedUseSelectorHook * Upgrade reduxjs-toolkit and fix types * Upgrade more dependencies and fix types * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * Undo unnecessary type fixes * Add renovate.json config for redux * Add caret to @reduxjs/toolkit version * Update package.json Co-authored-by: Patryk Kopyciński * Update package.json Co-authored-by: Patryk Kopyciński * Update package.json Co-authored-by: Patryk Kopyciński * yarn bootstrap * Ts-ignore failing types in presentation_util redux_embeddables * Downgrade @reduxjs/toolkit to 1.7.2 * Undo ts-ignores in redux-embeddables * Remove CombinedState comment * Rebase onto main Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Patryk Kopyciński --- package.json | 10 +-- packages/kbn-test-jest-helpers/BUILD.bazel | 1 - packages/kbn-test/BUILD.bazel | 1 - renovate.json | 16 +++++ .../public/common/store/types.ts | 9 +-- .../pages/endpoint_hosts/store/selectors.ts | 4 +- .../selectors/policy_settings_selectors.ts | 2 +- .../public/network/containers/tls/index.tsx | 4 +- .../public/resolver/store/camera/selectors.ts | 14 ++--- .../public/resolver/store/data/selectors.ts | 21 +------ .../public/resolver/store/selectors.ts | 31 ++++++---- .../apps/synthetics/state/root_reducer.ts | 34 +++++++---- .../public/legacy_uptime/state/index.ts | 4 +- .../legacy_uptime/state/reducers/index.ts | 61 +++++++++++++------ .../timelines/public/hooks/use_selector.tsx | 2 +- yarn.lock | 56 ++++++++--------- 16 files changed, 148 insertions(+), 122 deletions(-) diff --git a/package.json b/package.json index 7c22eead3932..32dadf55d2d0 100644 --- a/package.json +++ b/package.json @@ -364,7 +364,7 @@ "@opentelemetry/resources": "^1.4.0", "@opentelemetry/sdk-metrics-base": "^0.30.0", "@opentelemetry/semantic-conventions": "^1.4.0", - "@reduxjs/toolkit": "^1.6.1", + "@reduxjs/toolkit": "1.7.2", "@slack/webhook": "^5.0.4", "@tanstack/react-query": "^4.2.1", "@tanstack/react-query-devtools": "^4.2.1", @@ -443,7 +443,7 @@ "https-proxy-agent": "^5.0.0", "i18n-iso-countries": "^4.3.1", "icalendar": "0.7.1", - "immer": "^9.0.6", + "immer": "^9.0.15", "inquirer": "^7.3.3", "intl": "^1.2.5", "intl-format-cache": "^2.1.0", @@ -544,18 +544,18 @@ "react-visibility-sensor": "^5.1.1", "recompose": "^0.30.0", "reduce-reducers": "^1.0.4", - "redux": "^4.1.0", + "redux": "^4.2.0", "redux-actions": "^2.6.5", "redux-devtools-extension": "^2.13.8", "redux-logger": "^3.0.6", "redux-observable": "2.0.0", "redux-saga": "^1.1.3", - "redux-thunk": "^2.3.0", + "redux-thunk": "^2.4.1", "redux-thunks": "^1.0.0", "remark-parse": "^8.0.3", "remark-stringify": "^8.0.3", "require-in-the-middle": "^5.1.0", - "reselect": "^4.0.0", + "reselect": "^4.1.6", "resize-observer-polyfill": "^1.5.1", "rison-node": "1.0.2", "rrule": "2.6.4", diff --git a/packages/kbn-test-jest-helpers/BUILD.bazel b/packages/kbn-test-jest-helpers/BUILD.bazel index f25123f3f636..3ac64fc5d52f 100644 --- a/packages/kbn-test-jest-helpers/BUILD.bazel +++ b/packages/kbn-test-jest-helpers/BUILD.bazel @@ -108,7 +108,6 @@ TYPES_DEPS = [ "@npm//@types/prettier", "@npm//@types/react", "@npm//@types/react-dom", - "@npm//@types/react-redux", "@npm//@types/react-router-dom", "@npm//@types/semver", "@npm//@types/xml2js", diff --git a/packages/kbn-test/BUILD.bazel b/packages/kbn-test/BUILD.bazel index 7094425f81f9..4397def41405 100644 --- a/packages/kbn-test/BUILD.bazel +++ b/packages/kbn-test/BUILD.bazel @@ -121,7 +121,6 @@ TYPES_DEPS = [ "@npm//@types/node", "@npm//@types/prettier", "@npm//@types/react-dom", - "@npm//@types/react-redux", "@npm//@types/react-router-dom", "@npm//@types/semver", "@npm//@types/supertest", diff --git a/renovate.json b/renovate.json index 7f60faf4a0a6..b5523536465f 100644 --- a/renovate.json +++ b/renovate.json @@ -191,6 +191,22 @@ "matchBaseBranches": ["main"], "labels": ["release_note:skip", "backport:skip", "ci:all-cypress-suites"], "enabled": true + }, + { + "groupName": "redux", + "packageNames": ["redux", "react-redux"], + "reviewers":[ + "team:enterprise-search-frontend", + "team:kibana-presentation", + "team:kibana-data-discovery", + "team:platform-deployment-management", + "team:infra-monitoring-ui", + "team:kibana-gis", + "team:security-solution" + ], + "matchBaseBranches": ["main"], + "labels": ["release_note:skip", "backport:skip", "ci:all-cypress-suites"], + "enabled": true } ] } diff --git a/x-pack/plugins/security_solution/public/common/store/types.ts b/x-pack/plugins/security_solution/public/common/store/types.ts index 544bdb765e09..2a7717da6996 100644 --- a/x-pack/plugins/security_solution/public/common/store/types.ts +++ b/x-pack/plugins/security_solution/public/common/store/types.ts @@ -22,7 +22,7 @@ import type { ManagementPluginState } from '../../management'; import type { UsersPluginState } from '../../users/store'; import type { GlobalUrlParam } from './global_url_param'; -export type StoreState = HostsPluginState & +export type State = HostsPluginState & UsersPluginState & NetworkPluginState & UsersPluginState & @@ -34,13 +34,6 @@ export type StoreState = HostsPluginState & sourcerer: SourcererState; globalUrlParam: GlobalUrlParam; }; -/** - * The redux `State` type for the Security App. - * We use `CombinedState` to wrap our shape because we create our reducer using `combineReducers`. - * `combineReducers` returns a type wrapped in `CombinedState`. - * `CombinedState` is required for redux to know what keys to make optional when preloaded state into a store. - */ -export type State = CombinedState; /** * like redux's `MiddlewareAPI` but `getState` returns an `Immutable` version of diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts index 1cdb4d495d13..7665de64fa24 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/selectors.ts @@ -174,7 +174,7 @@ export const showView: (state: EndpointState) => EndpointIndexUIQueryParams['sho * Returns the Host Status which is connected the fleet agent */ export const hostStatusInfo: (state: Immutable) => HostStatus = createSelector( - (state) => state.hostStatus, + (state: Immutable) => state.hostStatus, (hostStatus) => { return hostStatus ? hostStatus : HostStatus.UNHEALTHY; } @@ -184,7 +184,7 @@ export const hostStatusInfo: (state: Immutable) => HostStatus = c * Returns the Policy Response overall status */ export const policyResponseStatus: (state: Immutable) => string = createSelector( - (state) => state.policyResponse, + (state: Immutable) => state.policyResponse, (policyResponse) => { return (policyResponse && policyResponse?.Endpoint?.policy?.applied?.status) || ''; } diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts index 04c5934a5b33..97d6886a49d3 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/selectors/policy_settings_selectors.ts @@ -105,7 +105,7 @@ export const license = (state: Immutable) => { /** Returns the policyId from the url */ export const policyIdFromParams: (state: Immutable) => string = createSelector( - (state) => state.location, + (state: Immutable) => state.location, (location: PolicyDetailsState['location']) => { return ( matchPath(location?.pathname ?? '', { diff --git a/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx b/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx index 9d13900619a0..5568488fd0ca 100644 --- a/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx +++ b/x-pack/plugins/security_solution/public/network/containers/tls/index.tsx @@ -62,9 +62,7 @@ export const useNetworkTls = ({ type, }: UseNetworkTls): [boolean, NetworkTlsArgs] => { const getTlsSelector = useMemo(() => networkSelectors.tlsSelector(), []); - const { activePage, limit, sort } = useDeepEqualSelector((state) => - getTlsSelector(state, type, flowTarget) - ); + const { activePage, limit, sort } = useDeepEqualSelector((state) => getTlsSelector(state, type)); const [networkTlsRequest, setNetworkTlsRequest] = useState(null); diff --git a/x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts index e022f9d5d3b9..9f6aba90d00b 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/camera/selectors.ts @@ -64,8 +64,8 @@ function animationIsActive(animation: CameraAnimationState, time: number): boole * */ export const scale: (state: CameraState) => (time: number) => Vector2 = createSelector( - (state) => state.scalingFactor, - (state) => state.animation, + (state: CameraState) => state.scalingFactor, + (state: CameraState) => state.animation, (scalingFactor, animation) => { const scaleNotCountingAnimation = scaleFromScalingFactor(scalingFactor); /** @@ -277,7 +277,7 @@ export const scale: (state: CameraState) => (time: number) => Vector2 = createSe */ export const clippingPlanes: (state: CameraState) => (time: number) => ClippingPlanes = createSelector( - (state) => state.rasterSize, + (state: CameraState) => state.rasterSize, scale, (rasterSize, scaleAtTime) => /** @@ -305,7 +305,7 @@ export const clippingPlanes: (state: CameraState) => (time: number) => ClippingP * Whether or not the camera is animating, at a given time. */ export const isAnimating: (state: CameraState) => (time: number) => boolean = createSelector( - (state) => state.animation, + (state: CameraState) => state.animation, (animation) => (time) => { return animation !== undefined && animationIsActive(animation, time); } @@ -324,10 +324,10 @@ export const isAnimating: (state: CameraState) => (time: number) => boolean = cr * We could update the translation as the user moved the mouse but floating point drift (round-off error) could occur. */ export const translation: (state: CameraState) => (time: number) => Vector2 = createSelector( - (state) => state.panning, - (state) => state.translationNotCountingCurrentPanning, + (state: CameraState) => state.panning, + (state: CameraState) => state.translationNotCountingCurrentPanning, scale, - (state) => state.animation, + (state: CameraState) => state.animation, (panning, translationNotCountingCurrentPanning, scaleAtTime, animation) => { /** * Memoizing this for object reference equality. diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts index 2aaf6206b06b..72afd77482c8 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts @@ -554,28 +554,9 @@ export const nodesAndEdgelines: (state: DataState) => ( processNodePositions: visibleProcessNodePositions, connectingEdgeLineSegments, }; - }, aaBBEqualityCheck); + }, aabbModel.isEqual); }); -function isAABBType(value: unknown): value is AABB { - const castValue = value as AABB; - return castValue.maximum !== undefined && castValue.minimum !== undefined; -} - -/** - * This is needed to avoid the TS error that is caused by using aabbModel.isEqual directly. Ideally we could - * just pass that function instead of having to check the type of the parameters. It might be worth doing a PR to - * the reselect library to correct the type. - */ -function aaBBEqualityCheck(a: T, b: T, index: number): boolean { - if (isAABBType(a) && isAABBType(b)) { - return aabbModel.isEqual(a, b); - } else { - // this is equivalent to the default equality check for defaultMemoize - return a === b; - } -} - /** * If there is a pending request that's for a entity ID that doesn't matche the `entityID`, then we should cancel it. */ diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts index 60e8507ba1bc..1940e680e1b5 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts @@ -9,7 +9,13 @@ import { createSelector, defaultMemoize } from 'reselect'; import * as cameraSelectors from './camera/selectors'; import * as dataSelectors from './data/selectors'; import * as uiSelectors from './ui/selectors'; -import type { ResolverState, IsometricTaxiLayout, DataState } from '../types'; +import type { + ResolverState, + IsometricTaxiLayout, + DataState, + VisibleEntites, + NodeData, +} from '../types'; import type { EventStats } from '../../../common/endpoint/types'; import * as nodeModel from '../../../common/endpoint/models/node'; @@ -211,14 +217,9 @@ export const statsTotalForNode = composeSelectors( export const visibleNodesAndEdgeLines = createSelector( nodesAndEdgelines, boundingBox, - function ( - /* eslint-disable @typescript-eslint/no-shadow */ - nodesAndEdgelines, - boundingBox - /* eslint-enable @typescript-eslint/no-shadow */ - ) { + function (nodesAndEdgelinesFn, boundingBoxFn) { // `boundingBox` and `nodesAndEdgelines` are each memoized. - return (time: number) => nodesAndEdgelines(boundingBox(time)); + return (time: number) => nodesAndEdgelinesFn(boundingBoxFn(time)); } ); @@ -240,12 +241,13 @@ export const originID: (state: ResolverState) => string | undefined = composeSel * Takes a nodeID (aka entity_id) and returns the node ID of the node that aria should 'flowto' or null * If the node has a flowto candidate that is currently visible, that will be returned, otherwise null. */ -export const ariaFlowtoNodeID: ( - state: ResolverState -) => (time: number) => (nodeID: string) => string | null = createSelector( +export const ariaFlowtoNodeID = createSelector( visibleNodesAndEdgeLines, composeSelectors(dataStateSelector, dataSelectors.ariaFlowtoCandidate), - (visibleNodesAndEdgeLinesAtTime, ariaFlowtoCandidate) => { + function ( + visibleNodesAndEdgeLinesAtTime: (time: number) => VisibleEntites, + ariaFlowtoCandidate: (nodeId: string) => string | null + ) { return defaultMemoize((time: number) => { // get the visible nodes at `time` const { processNodePositions } = visibleNodesAndEdgeLinesAtTime(time); @@ -361,7 +363,10 @@ export const newIDsToRequest: (state: ResolverState) => (time: number) => Set dataState.nodeData), visibleNodesAndEdgeLines, - function (nodeData, visibleNodesAndEdgeLinesAtTime) { + function ( + nodeData: Map | undefined, + visibleNodesAndEdgeLinesAtTime: (time: number) => VisibleEntites + ) { return defaultMemoize((time: number) => { const { processNodePositions: nodesInView } = visibleNodesAndEdgeLinesAtTime(time); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts index 8fbb92efaaa9..34e036bf6fac 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts @@ -7,16 +7,30 @@ import { combineReducers } from '@reduxjs/toolkit'; -import { syntheticsMonitorReducer } from './monitor_summary/synthetics_montior_reducer'; -import { monitorStatusReducer } from './monitor_summary'; -import { uiReducer } from './ui'; -import { indexStatusReducer } from './index_status'; -import { syntheticsEnablementReducer } from './synthetics_enablement'; -import { monitorListReducer } from './monitor_list'; -import { serviceLocationsReducer } from './service_locations'; -import { monitorOverviewReducer } from './overview'; +import { + syntheticsMonitorReducer, + SyntheticsMonitorState, +} from './monitor_summary/synthetics_montior_reducer'; +import { monitorStatusReducer, MonitorSummaryState } from './monitor_summary'; +import { uiReducer, UiState } from './ui'; +import { indexStatusReducer, IndexStatusState } from './index_status'; +import { syntheticsEnablementReducer, SyntheticsEnablementState } from './synthetics_enablement'; +import { monitorListReducer, MonitorListState } from './monitor_list'; +import { serviceLocationsReducer, ServiceLocationsState } from './service_locations'; +import { monitorOverviewReducer, MonitorOverviewState } from './overview'; -export const rootReducer = combineReducers({ +export interface SyntheticsAppState { + ui: UiState; + indexStatus: IndexStatusState; + syntheticsEnablement: SyntheticsEnablementState; + monitorList: MonitorListState; + serviceLocations: ServiceLocationsState; + monitorStatus: MonitorSummaryState; + syntheticsMonitor: SyntheticsMonitorState; + overview: MonitorOverviewState; +} + +export const rootReducer = combineReducers({ ui: uiReducer, indexStatus: indexStatusReducer, syntheticsEnablement: syntheticsEnablementReducer, @@ -26,5 +40,3 @@ export const rootReducer = combineReducers({ syntheticsMonitor: syntheticsMonitorReducer, overview: monitorOverviewReducer, }); - -export type SyntheticsAppState = ReturnType; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/state/index.ts b/x-pack/plugins/synthetics/public/legacy_uptime/state/index.ts index 9d4fa202b3d1..cb67df714dbc 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/state/index.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/state/index.ts @@ -11,9 +11,9 @@ import { composeWithDevTools } from 'redux-devtools-extension'; import createSagaMiddleware from 'redux-saga'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import { rootEffect } from './effects'; -import { rootReducer } from './reducers'; +import { rootReducer, RootState } from './reducers'; -export type AppState = ReturnType; +export type AppState = RootState; const sagaMW = createSagaMiddleware(); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/state/reducers/index.ts b/x-pack/plugins/synthetics/public/legacy_uptime/state/reducers/index.ts index 4c011a86e442..dc4db2d58ac6 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/state/reducers/index.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/state/reducers/index.ts @@ -6,27 +6,50 @@ */ import { combineReducers } from 'redux'; -import { agentPoliciesReducer } from '../private_locations'; -import { monitorReducer } from './monitor'; -import { uiReducer } from './ui'; -import { monitorStatusReducer } from './monitor_status'; -import { monitorListReducer } from './monitor_list'; -import { dynamicSettingsReducer } from './dynamic_settings'; -import { pingReducer } from './ping'; -import { pingListReducer } from './ping_list'; -import { monitorDurationReducer } from './monitor_duration'; -import { indexStatusReducer } from './index_status'; -import { mlJobsReducer } from './ml_anomaly'; -import { certificatesReducer } from '../certificates/certificates'; +import { agentPoliciesReducer, AgentPoliciesState } from '../private_locations'; +import { monitorReducer, MonitorState } from './monitor'; +import { uiReducer, UiState } from './ui'; +import { monitorStatusReducer, MonitorStatusState } from './monitor_status'; +import { monitorListReducer, MonitorList } from './monitor_list'; +import { dynamicSettingsReducer, DynamicSettingsState } from './dynamic_settings'; +import { pingReducer, PingState } from './ping'; +import { pingListReducer, PingListState } from './ping_list'; +import { monitorDurationReducer, MonitorDuration } from './monitor_duration'; +import { indexStatusReducer, IndexStatusState } from './index_status'; +import { mlJobsReducer, MLJobState } from './ml_anomaly'; +import { certificatesReducer, CertificatesState } from '../certificates/certificates'; import { selectedFiltersReducer } from './selected_filters'; -import { alertsReducer } from '../alerts/alerts'; -import { journeyReducer } from './journey'; -import { networkEventsReducer } from './network_events'; -import { syntheticsReducer } from './synthetics'; -import { monitorManagementListReducer } from './monitor_management'; -import { testNowRunsReducer } from './test_now_runs'; +import { SelectedFilters } from '../actions/selected_filters'; +import { alertsReducer, AlertState } from '../alerts/alerts'; +import { JourneyKVP, journeyReducer } from './journey'; +import { networkEventsReducer, NetworkEventsState } from './network_events'; +import { syntheticsReducer, SyntheticsReducerState } from './synthetics'; +import { monitorManagementListReducer, MonitorManagementList } from './monitor_management'; +import { testNowRunsReducer, TestNowRunsState } from './test_now_runs'; -export const rootReducer = combineReducers({ +export interface RootState { + monitor: MonitorState; + ui: UiState; + monitorList: MonitorList; + monitorManagementList: MonitorManagementList; + monitorStatus: MonitorStatusState; + dynamicSettings: DynamicSettingsState; + ping: PingState; + pingList: PingListState; + ml: MLJobState; + monitorDuration: MonitorDuration; + indexStatus: IndexStatusState; + certificates: CertificatesState; + selectedFilters: SelectedFilters | null; + alerts: AlertState; + journeys: JourneyKVP; + networkEvents: NetworkEventsState; + synthetics: SyntheticsReducerState; + testNowRuns: TestNowRunsState; + agentPolicies: AgentPoliciesState; +} + +export const rootReducer = combineReducers({ monitor: monitorReducer, ui: uiReducer, monitorList: monitorListReducer, diff --git a/x-pack/plugins/timelines/public/hooks/use_selector.tsx b/x-pack/plugins/timelines/public/hooks/use_selector.tsx index 07e1e7d5cc29..80f5a5905c95 100644 --- a/x-pack/plugins/timelines/public/hooks/use_selector.tsx +++ b/x-pack/plugins/timelines/public/hooks/use_selector.tsx @@ -8,7 +8,7 @@ import { shallowEqual, useSelector } from 'react-redux'; import deepEqual from 'fast-deep-equal'; -export type TypedUseSelectorHook = ( +export type TypedUseSelectorHook = >( selector: (state: TState) => TSelected, equalityFn?: (left: TSelected, right: TSelected) => boolean ) => TSelected; diff --git a/yarn.lock b/yarn.lock index d957cd7f9939..c5e1ab95e5b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4636,15 +4636,15 @@ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204" integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== -"@reduxjs/toolkit@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.1.tgz#7bc83b47352a663bf28db01e79d17ba54b98ade9" - integrity sha512-pa3nqclCJaZPAyBhruQtiRwtTjottRrVJqziVZcWzI73i6L3miLTtUyWfauwv08HWtiXLx1xGyGt+yLFfW/d0A== +"@reduxjs/toolkit@1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.7.2.tgz#b428aaef92582379464f9de698dbb71957eafb02" + integrity sha512-wwr3//Ar8ZhM9bS58O+HCIaMlR4Y6SNHfuszz9hKnQuFIKvwaL3Kmjo6fpDKUOjo4Lv54Yi299ed8rofCJ/Vjw== dependencies: - immer "^9.0.1" - redux "^4.1.0" - redux-thunk "^2.3.0" - reselect "^4.0.0" + immer "^9.0.7" + redux "^4.1.2" + redux-thunk "^2.4.1" + reselect "^4.1.5" "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" @@ -16829,10 +16829,10 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= -immer@^9.0.1, immer@^9.0.6: - version "9.0.6" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== +immer@^9.0.15, immer@^9.0.7: + version "9.0.15" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" + integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== import-fresh@^2.0.0: version "2.0.0" @@ -20935,7 +20935,7 @@ oauth-sign@~0.9.0: object-assign@4.X, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-assign@^3.0.0: version "3.0.0" @@ -23853,20 +23853,20 @@ redux-saga@^1.1.3: dependencies: "@redux-saga/core" "^1.1.3" -redux-thunk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== +redux-thunk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" + integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== redux-thunks@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redux-thunks/-/redux-thunks-1.0.0.tgz#56e03b86d281a2664c884ab05c543d9ab1673658" integrity sha1-VuA7htKBomZMiEqwXFQ9mrFnNlg= -redux@^4.0.0, redux@^4.0.4, redux@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== +redux@^4.0.0, redux@^4.0.4, redux@^4.1.2, redux@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" @@ -23912,9 +23912,9 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.15.0: version "0.15.0" @@ -24313,10 +24313,10 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@^4.0.0, reselect@^4.1.5, reselect@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== resize-observer-polyfill@^1.5.1: version "1.5.1" From a2f3e3bd7c590c64bf0c49a7b273e78e825acc9a Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 25 Aug 2022 12:11:11 -0400 Subject: [PATCH 12/50] Bump linux bazel cache timeout to 30 minutes (#139491) We're seeing some timeouts recently in the 15 minute range. Mac timeouts are already at 60 min. --- .buildkite/pipelines/on_merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index a20dd7c3dce6..7ea0317b56e7 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -135,7 +135,7 @@ steps: label: 'Populate local dev bazel cache (Linux)' agents: queue: n2-4-spot - timeout_in_minutes: 15 + timeout_in_minutes: 30 retry: automatic: - exit_status: '-1' From 7429f78cfa1d3d1722dd3b77ad8e2774b4e62b60 Mon Sep 17 00:00:00 2001 From: Dmitrii Shevchenko Date: Thu, 25 Aug 2022 18:21:39 +0200 Subject: [PATCH 13/50] Allow to bump rule version for prebuilt rules (#139287) --- .../routes/rules/patch_rules_bulk_route.ts | 4 +- .../routes/rules/patch_rules_route.ts | 4 +- .../routes/rules/utils/import_rules_utils.ts | 4 +- .../rules/patch_rules.test.ts | 44 ++++---- .../lib/detection_engine/rules/patch_rules.ts | 28 ++--- .../lib/detection_engine/rules/types.ts | 4 +- .../rules/update_prepacked_rules.test.ts | 10 +- .../rules/update_prepacked_rules.ts | 4 +- .../schemas/rule_converters.test.ts | 54 +++++++--- .../schemas/rule_converters.ts | 102 ++++++++++-------- 10 files changed, 150 insertions(+), 108 deletions(-) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts index aeff52f61cfb..f80a5ffb94e5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts @@ -85,9 +85,9 @@ export const patchRulesBulkRoute = ( }); const rule = await patchRules({ - rule: migratedRule, + existingRule: migratedRule, rulesClient, - params: payloadRule, + nextParams: payloadRule, }); if (rule != null && rule.enabled != null && rule.name != null) { const ruleExecutionSummary = await ruleExecutionLog.getExecutionSummary(rule.id); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts index f6f2ff03efa2..cdd46c2c189d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts @@ -77,8 +77,8 @@ export const patchRulesRoute = (router: SecuritySolutionPluginRouter, ml: SetupP const rule = await patchRules({ rulesClient, - rule: migratedRule, - params, + existingRule: migratedRule, + nextParams: params, }); if (rule != null && rule.enabled != null && rule.name != null) { const ruleExecutionSummary = await ruleExecutionLog.getExecutionSummary(rule.id); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/import_rules_utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/import_rules_utils.ts index 49d85307cac0..a623f3887276 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/import_rules_utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/import_rules_utils.ts @@ -129,8 +129,8 @@ export const importRules = async ({ }); await patchRules({ rulesClient, - rule: migratedRule, - params: { + existingRule: migratedRule, + nextParams: { ...parsedRule, exceptions_list: [...exceptions], }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts index d79f36f029a9..e99f7f85df15 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.test.ts @@ -18,48 +18,48 @@ import { describe('patchRules', () => { it('should call rulesClient.disable if the rule was enabled and enabled is false', async () => { const rulesClient = rulesClientMock.create(); - const params = { + const nextParams = { ...getCreateRulesSchemaMock(), enabled: false, }; - const rule = { + const existingRule = { ...getRuleMock(getQueryRuleParams()), enabled: true, }; rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.disable).toHaveBeenCalledWith( expect.objectContaining({ - id: rule.id, + id: existingRule.id, }) ); }); it('should call rulesClient.enable if the rule was disabled and enabled is true', async () => { const rulesClient = rulesClientMock.create(); - const params = { + const nextParams = { ...getCreateRulesSchemaMock(), enabled: true, }; - const rule = { + const existingRule = { ...getRuleMock(getQueryRuleParams()), enabled: false, }; rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.enable).toHaveBeenCalledWith( expect.objectContaining({ - id: rule.id, + id: existingRule.id, }) ); }); it('calls the rulesClient with legacy ML params', async () => { const rulesClient = rulesClientMock.create(); - const params = getCreateMachineLearningRulesSchemaMock(); - const rule = getRuleMock(getMlRuleParams()); + const nextParams = getCreateMachineLearningRulesSchemaMock(); + const existingRule = getRuleMock(getMlRuleParams()); rulesClient.update.mockResolvedValue(getRuleMock(getMlRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ data: expect.objectContaining({ @@ -74,13 +74,13 @@ describe('patchRules', () => { it('calls the rulesClient with new ML params', async () => { const rulesClient = rulesClientMock.create(); - const params = { + const nextParams = { ...getCreateMachineLearningRulesSchemaMock(), machine_learning_job_id: ['new_job_1', 'new_job_2'], }; - const rule = getRuleMock(getMlRuleParams()); + const existingRule = getRuleMock(getMlRuleParams()); rulesClient.update.mockResolvedValue(getRuleMock(getMlRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ data: expect.objectContaining({ @@ -96,7 +96,7 @@ describe('patchRules', () => { describe('regression tests', () => { it("updates the rule's actions if provided", async () => { const rulesClient = rulesClientMock.create(); - const params = { + const nextParams = { ...getCreateRulesSchemaMock(), actions: [ { @@ -109,9 +109,9 @@ describe('patchRules', () => { }, ], }; - const rule = getRuleMock(getQueryRuleParams()); + const existingRule = getRuleMock(getQueryRuleParams()); rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ data: expect.objectContaining({ @@ -132,10 +132,10 @@ describe('patchRules', () => { it('does not update actions if none are specified', async () => { const rulesClient = rulesClientMock.create(); - const params = getCreateRulesSchemaMock(); - delete params.actions; - const rule = getRuleMock(getQueryRuleParams()); - rule.actions = [ + const nextParams = getCreateRulesSchemaMock(); + delete nextParams.actions; + const existingRule = getRuleMock(getQueryRuleParams()); + existingRule.actions = [ { actionTypeId: '.slack', id: '2933e581-d81c-4fe3-88fe-c57c6b8a5bfd', @@ -146,7 +146,7 @@ describe('patchRules', () => { }, ]; rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await patchRules({ rulesClient, params, rule }); + await patchRules({ rulesClient, nextParams, existingRule }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ data: expect.objectContaining({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts index d6fc0fba71bf..0a8342ae265a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts @@ -13,39 +13,39 @@ import { convertPatchAPIToInternalSchema } from '../schemas/rule_converters'; export const patchRules = async ({ rulesClient, - rule, - params, + existingRule, + nextParams, }: PatchRulesOptions): Promise | null> => { - if (rule == null) { + if (existingRule == null) { return null; } - const patchedRule = convertPatchAPIToInternalSchema(params, rule); + const patchedRule = convertPatchAPIToInternalSchema(nextParams, existingRule); const update = await rulesClient.update({ - id: rule.id, + id: existingRule.id, data: patchedRule, }); - if (params.throttle !== undefined) { + if (nextParams.throttle !== undefined) { await maybeMute({ rulesClient, - muteAll: rule.muteAll, - throttle: params.throttle, + muteAll: existingRule.muteAll, + throttle: nextParams.throttle, id: update.id, }); } - if (rule.enabled && params.enabled === false) { - await rulesClient.disable({ id: rule.id }); - } else if (!rule.enabled && params.enabled === true) { - await rulesClient.enable({ id: rule.id }); + if (existingRule.enabled && nextParams.enabled === false) { + await rulesClient.disable({ id: existingRule.id }); + } else if (!existingRule.enabled && nextParams.enabled === true) { + await rulesClient.enable({ id: existingRule.id }); } else { // enabled is null or undefined and we do not touch the rule } - if (params.enabled != null) { - return { ...update, enabled: params.enabled }; + if (nextParams.enabled != null) { + return { ...update, enabled: nextParams.enabled }; } else { return update; } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts index 6e3b1a3dea2c..e02daa7c88c4 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts @@ -79,8 +79,8 @@ export interface UpdateRulesOptions { export interface PatchRulesOptions { rulesClient: RulesClient; - params: PatchRulesSchema; - rule: RuleAlertType | null | undefined; + nextParams: PatchRulesSchema; + existingRule: RuleAlertType | null | undefined; } export interface ReadRuleOptions { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts index d71274c7f154..88d543cc7700 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.test.ts @@ -62,7 +62,7 @@ describe('updatePrepackagedRules', () => { expect(patchRules).toHaveBeenCalledWith( expect.objectContaining({ - params: expect.objectContaining({ + nextParams: expect.objectContaining({ actions: undefined, }), }) @@ -70,7 +70,7 @@ describe('updatePrepackagedRules', () => { expect(patchRules).toHaveBeenCalledWith( expect.objectContaining({ - params: expect.objectContaining({ + nextParams: expect.objectContaining({ enabled: undefined, }), }) @@ -99,7 +99,7 @@ describe('updatePrepackagedRules', () => { expect(patchRules).toHaveBeenCalledWith( expect.objectContaining({ - params: expect.objectContaining({ + nextParams: expect.objectContaining({ threat_indicator_path: 'test.path', }), }) @@ -107,7 +107,7 @@ describe('updatePrepackagedRules', () => { expect(patchRules).toHaveBeenCalledWith( expect.objectContaining({ - params: expect.objectContaining({ + nextParams: expect.objectContaining({ threat_index: ['test-index'], }), }) @@ -115,7 +115,7 @@ describe('updatePrepackagedRules', () => { expect(patchRules).toHaveBeenCalledWith( expect.objectContaining({ - params: expect.objectContaining({ + nextParams: expect.objectContaining({ threat_query: 'threat:*', }), }) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts index 1487aa79e487..aaee033dd8e9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/update_prepacked_rules.ts @@ -99,8 +99,8 @@ export const createPromises = ( } else { return patchRules({ rulesClient, - rule: migratedRule, - params: { + existingRule: migratedRule, + nextParams: { ...rule, // Force enabled to use the enabled state from the existing rule by passing in undefined to patchRules enabled: undefined, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.test.ts index 0a728f9c9e5c..50cfce7ac905 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.test.ts @@ -206,13 +206,43 @@ describe('rule_converters', () => { }); describe('convertPatchAPIToInternalSchema', () => { - test('should not update version for immutable rules', () => { - const patchParams = { + test('should set version to one specified in next params for custom rules', () => { + const nextParams = { index: ['new-test-index'], language: 'lucene', + version: 3, }; - const rule = getRuleMock({ ...getQueryRuleParams(), immutable: true }); - const patchedParams = convertPatchAPIToInternalSchema(patchParams, rule); + const existingRule = getRuleMock({ ...getQueryRuleParams(), version: 1 }); + const patchedParams = convertPatchAPIToInternalSchema(nextParams, existingRule); + expect(patchedParams).toEqual( + expect.objectContaining({ + params: expect.objectContaining({ version: 3 }), + }) + ); + }); + + test('should set version to one specified in next params for immutable rules', () => { + const nextParams = { + index: ['new-test-index'], + language: 'lucene', + version: 3, + }; + const existingRule = getRuleMock({ ...getQueryRuleParams(), version: 1, immutable: true }); + const patchedParams = convertPatchAPIToInternalSchema(nextParams, existingRule); + expect(patchedParams).toEqual( + expect.objectContaining({ + params: expect.objectContaining({ version: 3 }), + }) + ); + }); + + test('should not increment version for immutable rules if it is not specified in next params', () => { + const nextParams = { + index: ['new-test-index'], + language: 'lucene', + }; + const existingRule = getRuleMock({ ...getQueryRuleParams(), version: 1, immutable: true }); + const patchedParams = convertPatchAPIToInternalSchema(nextParams, existingRule); expect(patchedParams).toEqual( expect.objectContaining({ params: expect.objectContaining({ version: 1 }), @@ -220,13 +250,13 @@ describe('rule_converters', () => { ); }); - test('should update version for mutable rules', () => { - const patchParams = { + test('should increment version for custom rules if it is not specified in next params', () => { + const nextParams = { index: ['new-test-index'], language: 'lucene', }; - const rule = getRuleMock({ ...getQueryRuleParams() }); - const patchedParams = convertPatchAPIToInternalSchema(patchParams, rule); + const existingRule = getRuleMock({ ...getQueryRuleParams(), version: 1 }); + const patchedParams = convertPatchAPIToInternalSchema(nextParams, existingRule); expect(patchedParams).toEqual( expect.objectContaining({ params: expect.objectContaining({ version: 2 }), @@ -234,14 +264,14 @@ describe('rule_converters', () => { ); }); - test('should not update version due to enabled, id, or rule_id, ', () => { - const patchParams = { + test('should not increment version due to enabled, id, or rule_id, ', () => { + const nextParams = { enabled: false, id: 'some-id', rule_id: 'some-rule-id', }; - const rule = getRuleMock(getQueryRuleParams()); - const patchedParams = convertPatchAPIToInternalSchema(patchParams, rule); + const existingRule = getRuleMock({ ...getQueryRuleParams(), version: 1 }); + const patchedParams = convertPatchAPIToInternalSchema(nextParams, existingRule); expect(patchedParams).toEqual( expect.objectContaining({ params: expect.objectContaining({ version: 1 }), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts index 74d55c262d17..59811ac03900 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_converters.ts @@ -375,75 +375,87 @@ export const patchTypeSpecificSnakeToCamel = ( }; const versionExcludedKeys = ['enabled', 'id', 'rule_id']; -const shouldUpdateVersion = (params: PatchRulesSchema): boolean => { - for (const key in params) { +const incrementVersion = (nextParams: PatchRulesSchema, existingRule: RuleParams) => { + // The the version from nextParams if it's provided + if (nextParams.version) { + return nextParams.version; + } + + // If the rule is immutable, keep the current version + if (existingRule.immutable) { + return existingRule.version; + } + + // For custom rules, check modified params to deicide whether version increment is needed + for (const key in nextParams) { if (!versionExcludedKeys.includes(key)) { - return true; + return existingRule.version + 1; } } - return false; + return existingRule.version; }; // eslint-disable-next-line complexity export const convertPatchAPIToInternalSchema = ( - params: PatchRulesSchema & { + nextParams: PatchRulesSchema & { related_integrations?: RelatedIntegrationArray; required_fields?: RequiredFieldArray; setup?: SetupGuide; }, existingRule: SanitizedRule ): InternalRuleUpdate => { - const typeSpecificParams = patchTypeSpecificSnakeToCamel(params, existingRule.params); + const typeSpecificParams = patchTypeSpecificSnakeToCamel(nextParams, existingRule.params); const existingParams = existingRule.params; return { - name: params.name ?? existingRule.name, - tags: params.tags ?? existingRule.tags, + name: nextParams.name ?? existingRule.name, + tags: nextParams.tags ?? existingRule.tags, params: { - author: params.author ?? existingParams.author, - buildingBlockType: params.building_block_type ?? existingParams.buildingBlockType, - description: params.description ?? existingParams.description, + author: nextParams.author ?? existingParams.author, + buildingBlockType: nextParams.building_block_type ?? existingParams.buildingBlockType, + description: nextParams.description ?? existingParams.description, ruleId: existingParams.ruleId, - falsePositives: params.false_positives ?? existingParams.falsePositives, - from: params.from ?? existingParams.from, + falsePositives: nextParams.false_positives ?? existingParams.falsePositives, + from: nextParams.from ?? existingParams.from, immutable: existingParams.immutable, - license: params.license ?? existingParams.license, - outputIndex: params.output_index ?? existingParams.outputIndex, - timelineId: params.timeline_id ?? existingParams.timelineId, - timelineTitle: params.timeline_title ?? existingParams.timelineTitle, - meta: params.meta ?? existingParams.meta, - maxSignals: params.max_signals ?? existingParams.maxSignals, - relatedIntegrations: params.related_integrations ?? existingParams.relatedIntegrations, - requiredFields: params.required_fields ?? existingParams.requiredFields, - riskScore: params.risk_score ?? existingParams.riskScore, - riskScoreMapping: params.risk_score_mapping ?? existingParams.riskScoreMapping, - ruleNameOverride: params.rule_name_override ?? existingParams.ruleNameOverride, - setup: params.setup ?? existingParams.setup, - severity: params.severity ?? existingParams.severity, - severityMapping: params.severity_mapping ?? existingParams.severityMapping, - threat: params.threat ?? existingParams.threat, - timestampOverride: params.timestamp_override ?? existingParams.timestampOverride, + license: nextParams.license ?? existingParams.license, + outputIndex: nextParams.output_index ?? existingParams.outputIndex, + timelineId: nextParams.timeline_id ?? existingParams.timelineId, + timelineTitle: nextParams.timeline_title ?? existingParams.timelineTitle, + meta: nextParams.meta ?? existingParams.meta, + maxSignals: nextParams.max_signals ?? existingParams.maxSignals, + relatedIntegrations: nextParams.related_integrations ?? existingParams.relatedIntegrations, + requiredFields: nextParams.required_fields ?? existingParams.requiredFields, + riskScore: nextParams.risk_score ?? existingParams.riskScore, + riskScoreMapping: nextParams.risk_score_mapping ?? existingParams.riskScoreMapping, + ruleNameOverride: nextParams.rule_name_override ?? existingParams.ruleNameOverride, + setup: nextParams.setup ?? existingParams.setup, + severity: nextParams.severity ?? existingParams.severity, + severityMapping: nextParams.severity_mapping ?? existingParams.severityMapping, + threat: nextParams.threat ?? existingParams.threat, + timestampOverride: nextParams.timestamp_override ?? existingParams.timestampOverride, timestampOverrideFallbackDisabled: - params.timestamp_override_fallback_disabled ?? + nextParams.timestamp_override_fallback_disabled ?? existingParams.timestampOverrideFallbackDisabled, - to: params.to ?? existingParams.to, - references: params.references ?? existingParams.references, - namespace: params.namespace ?? existingParams.namespace, - note: params.note ?? existingParams.note, + to: nextParams.to ?? existingParams.to, + references: nextParams.references ?? existingParams.references, + namespace: nextParams.namespace ?? existingParams.namespace, + note: nextParams.note ?? existingParams.note, // Always use the version from the request if specified. If it isn't specified, leave immutable rules alone and // increment the version of mutable rules by 1. - version: - params.version ?? existingParams.immutable - ? existingParams.version - : shouldUpdateVersion(params) - ? existingParams.version + 1 - : existingParams.version, - exceptionsList: params.exceptions_list ?? existingParams.exceptionsList, + version: incrementVersion(nextParams, existingParams), + exceptionsList: nextParams.exceptions_list ?? existingParams.exceptionsList, ...typeSpecificParams, }, - schedule: { interval: params.interval ?? existingRule.schedule.interval }, - actions: params.actions ? params.actions.map(transformRuleToAlertAction) : existingRule.actions, - throttle: params.throttle ? transformToAlertThrottle(params.throttle) : existingRule.throttle, - notifyWhen: params.throttle ? transformToNotifyWhen(params.throttle) : existingRule.notifyWhen, + schedule: { interval: nextParams.interval ?? existingRule.schedule.interval }, + actions: nextParams.actions + ? nextParams.actions.map(transformRuleToAlertAction) + : existingRule.actions, + throttle: nextParams.throttle + ? transformToAlertThrottle(nextParams.throttle) + : existingRule.throttle, + notifyWhen: nextParams.throttle + ? transformToNotifyWhen(nextParams.throttle) + : existingRule.notifyWhen, }; }; From 135115d833165a7eb2ef10b571a0cd0ee3cae2e4 Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Thu, 25 Aug 2022 18:31:41 +0200 Subject: [PATCH 14/50] [DataViews] dont check relationships for adhoc data views (#139376) --- .../public/components/edit_index_pattern/edit_index_pattern.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx index 74e1eb77cf50..3c9eeaa63109 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx @@ -82,7 +82,7 @@ export const EditIndexPattern = withRouter( }, [savedObjectsManagement]); useEffect(() => { - if (allowedTypes.length === 0) { + if (allowedTypes.length === 0 || !indexPattern.isPersisted()) { return; } const allowedAsString = allowedTypes.map((item) => item.name); From f68751054a3d736b209bc0b096fae5c339bda19c Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Thu, 25 Aug 2022 18:32:06 +0200 Subject: [PATCH 15/50] [DataViews] expose list of matched indices (#139067) --- packages/kbn-optimizer/limits.yml | 2 +- .../data_views/common/data_views/data_view.ts | 5 +++ .../common/data_views/data_views.test.ts | 2 +- .../common/data_views/data_views.ts | 41 ++++++++++++++++--- src/plugins/data_views/common/types.ts | 10 ++++- .../data_views/data_views_api_client.ts | 9 ++-- .../server/fetcher/index_patterns_fetcher.ts | 17 ++++---- .../field_capabilities.test.js | 12 +++--- .../field_capabilities/field_capabilities.ts | 7 +++- .../data_views/server/routes/fields_for.ts | 4 +- .../fields_for_wildcard_route/conflicts.js | 1 + .../fields_for_wildcard_route/response.js | 3 ++ .../rule_data_client/rule_data_client.test.ts | 2 +- .../rule_data_client/rule_data_client.ts | 2 +- .../lib/requests/get_index_pattern.ts | 2 +- .../search_strategy/index_fields/index.ts | 22 +++++----- 16 files changed, 100 insertions(+), 41 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index d41a5356af08..7883acc833ad 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -101,7 +101,7 @@ pageLoadAssetSize: visTypeMetric: 23332 bfetch: 22837 kibanaUtils: 79713 - dataViews: 43532 + dataViews: 44532 expressions: 140958 fieldFormats: 65209 kibanaReact: 74422 diff --git a/src/plugins/data_views/common/data_views/data_view.ts b/src/plugins/data_views/common/data_views/data_view.ts index 29654c5d5784..42ab6d10834d 100644 --- a/src/plugins/data_views/common/data_views/data_view.ts +++ b/src/plugins/data_views/common/data_views/data_view.ts @@ -146,6 +146,11 @@ export class DataView implements DataViewBase { */ public name: string = ''; + /* + * list of indices that the index pattern matched + */ + public matchedIndices: string[] = []; + /** * constructor * @param config - config data and dependencies diff --git a/src/plugins/data_views/common/data_views/data_views.test.ts b/src/plugins/data_views/common/data_views/data_views.test.ts index fcf60947db75..af95942393e1 100644 --- a/src/plugins/data_views/common/data_views/data_views.test.ts +++ b/src/plugins/data_views/common/data_views/data_views.test.ts @@ -21,7 +21,7 @@ import { stubbedSavedObjectIndexPattern } from '../data_view.stub'; const createFieldsFetcher = () => ({ - getFieldsForWildcard: jest.fn(async () => []), + getFieldsForWildcard: jest.fn(async () => ({ fields: [], indices: [] })), } as any as IDataViewsApiClient); const fieldFormats = fieldFormatsMock; diff --git a/src/plugins/data_views/common/data_views/data_views.ts b/src/plugins/data_views/common/data_views/data_views.ts index aca409ea0862..7c5e9314a153 100644 --- a/src/plugins/data_views/common/data_views/data_views.ts +++ b/src/plugins/data_views/common/data_views/data_views.ts @@ -478,7 +478,7 @@ export class DataViewsService { */ getFieldsForWildcard = async (options: GetFieldsOptions): Promise => { const metaFields = await this.config.get(META_FIELDS); - return this.apiClient.getFieldsForWildcard({ + const { fields } = await this.apiClient.getFieldsForWildcard({ pattern: options.pattern, metaFields, type: options.type, @@ -486,6 +486,7 @@ export class DataViewsService { allowNoIndex: options.allowNoIndex, filter: options.filter, }); + return fields; }; /** @@ -505,13 +506,36 @@ export class DataViewsService { pattern: indexPattern.title as string, }); + private getFieldsAndIndicesForDataView = async (dataView: DataView) => { + const metaFields = await this.config.get(META_FIELDS); + return this.apiClient.getFieldsForWildcard({ + type: dataView.type, + rollupIndex: dataView?.typeMeta?.params?.rollup_index, + allowNoIndex: dataView.allowNoIndex, + pattern: dataView.title as string, + metaFields, + }); + }; + + private getFieldsAndIndicesForWildcard = async (options: GetFieldsOptions) => { + const metaFields = await this.config.get(META_FIELDS); + return await this.apiClient.getFieldsForWildcard({ + pattern: options.pattern, + metaFields, + type: options.type, + rollupIndex: options.rollupIndex, + allowNoIndex: options.allowNoIndex, + filter: options.filter, + }); + }; + /** * Refresh field list for a given index pattern. * @param indexPattern */ refreshFields = async (indexPattern: DataView) => { try { - const fields = (await this.getFieldsForIndexPattern(indexPattern)) as FieldSpec[]; + const { fields, indices } = await this.getFieldsAndIndicesForDataView(indexPattern); fields.forEach((field) => (field.isMapped = true)); const scripted = indexPattern.getScriptedFields().map((field) => field.spec); const fieldAttrs = indexPattern.getFieldAttrs(); @@ -527,6 +551,7 @@ export class DataViewsService { !fieldsWithSavedAttrs.find((mappedField) => mappedField.name === runtimeField.name) ); indexPattern.fields.replaceAll([...runtimeFieldsArray, ...fieldsWithSavedAttrs]); + indexPattern.matchedIndices = indices; } catch (err) { if (err instanceof DataViewMissingIndices) { this.onNotification( @@ -567,7 +592,7 @@ export class DataViewsService { const scriptedFields = fieldsAsArr.filter((field) => field.scripted); try { let updatedFieldList: FieldSpec[]; - const newFields = (await this.getFieldsForWildcard(options)) as FieldSpec[]; + const { fields: newFields, indices } = await this.getFieldsAndIndicesForWildcard(options); newFields.forEach((field) => (field.isMapped = true)); // If allowNoIndex, only update field list if field caps finds fields. To support @@ -578,7 +603,7 @@ export class DataViewsService { updatedFieldList = fieldsAsArr; } - return this.fieldArrayToMap(updatedFieldList, fieldAttrs); + return { fields: this.fieldArrayToMap(updatedFieldList, fieldAttrs), indices }; } catch (err) { if (err instanceof DataViewMissingIndices) { this.onNotification( @@ -693,8 +718,10 @@ export class DataViewsService { ? JSON.parse(savedObject.attributes.fieldAttrs) : {}; + let matchedIndices: string[] = []; + try { - spec.fields = await this.refreshFieldSpecMap( + const { fields, indices } = await this.refreshFieldSpecMap( spec.fields || {}, savedObject.id, spec.title as string, @@ -708,6 +735,9 @@ export class DataViewsService { spec.fieldAttrs ); + spec.fields = fields; + matchedIndices = indices || []; + const runtimeFieldSpecs = this.getRuntimeFields(runtimeFieldMap, spec.fieldAttrs); // mapped fields overwrite runtime fields spec.fields = { ...runtimeFieldSpecs, ...spec.fields }; @@ -740,6 +770,7 @@ export class DataViewsService { : {}; const indexPattern = await this.create(spec, true); + indexPattern.matchedIndices = matchedIndices; indexPattern.resetOriginalSavedObjectBody(); return indexPattern; }; diff --git a/src/plugins/data_views/common/types.ts b/src/plugins/data_views/common/types.ts index 4fcacc01c373..ec0aeb081124 100644 --- a/src/plugins/data_views/common/types.ts +++ b/src/plugins/data_views/common/types.ts @@ -317,8 +317,16 @@ export interface GetFieldsOptions { filter?: QueryDslQueryContainer; } +/** + * FieldsForWildcard response + */ +export interface FieldsForWildcardResponse { + fields: FieldSpec[]; + indices: string[]; +} + export interface IDataViewsApiClient { - getFieldsForWildcard: (options: GetFieldsOptions) => Promise; + getFieldsForWildcard: (options: GetFieldsOptions) => Promise; hasUserDataView: () => Promise; } diff --git a/src/plugins/data_views/public/data_views/data_views_api_client.ts b/src/plugins/data_views/public/data_views/data_views_api_client.ts index b2b8c169c325..835c22891c68 100644 --- a/src/plugins/data_views/public/data_views/data_views_api_client.ts +++ b/src/plugins/data_views/public/data_views/data_views_api_client.ts @@ -8,7 +8,8 @@ import { HttpSetup } from '@kbn/core/public'; import { DataViewMissingIndices } from '../../common/lib'; -import { FieldSpec, GetFieldsOptions, IDataViewsApiClient } from '../../common'; +import { GetFieldsOptions, IDataViewsApiClient } from '../../common'; +import { FieldsForWildcardResponse } from '../../common/types'; const API_BASE_URL: string = `/api/index_patterns/`; @@ -50,14 +51,16 @@ export class DataViewsApiClient implements IDataViewsApiClient { */ getFieldsForWildcard(options: GetFieldsOptions) { const { pattern, metaFields, type, rollupIndex, allowNoIndex, filter } = options; - return this._request<{ fields: FieldSpec[] }>(this._getUrl(['_fields_for_wildcard']), { + return this._request(this._getUrl(['_fields_for_wildcard']), { pattern, meta_fields: metaFields, type, rollup_index: rollupIndex, allow_no_index: allowNoIndex, filter, - }).then((resp) => resp?.fields || []); + }).then((response) => { + return response || { fields: [], indices: [] }; + }); } /** diff --git a/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts b/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts index 0ff410e53fca..3049c2d1a3de 100644 --- a/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts +++ b/src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts @@ -61,7 +61,7 @@ export class IndexPatternsFetcher { type?: string; rollupIndex?: string; filter?: QueryDslQueryContainer; - }): Promise { + }): Promise<{ fields: FieldDescriptor[]; indices: string[] }> { const { pattern, metaFields = [], fieldCapsOptions, type, rollupIndex, filter } = options; const patternList = Array.isArray(pattern) ? pattern : pattern.split(','); const allowNoIndices = fieldCapsOptions @@ -94,17 +94,20 @@ export class IndexPatternsFetcher { } const rollupIndexCapabilities = capabilityCheck.aggs; - const fieldCapsResponseObj = keyBy(fieldCapsResponse, 'name'); + const fieldCapsResponseObj = keyBy(fieldCapsResponse.fields, 'name'); // Keep meta fields metaFields!.forEach( (field: string) => fieldCapsResponseObj[field] && rollupFields.push(fieldCapsResponseObj[field]) ); - return mergeCapabilitiesWithFields( - rollupIndexCapabilities!, - fieldCapsResponseObj, - rollupFields - ); + return { + fields: mergeCapabilitiesWithFields( + rollupIndexCapabilities!, + fieldCapsResponseObj, + rollupFields + ), + indices: fieldCapsResponse.indices, + }; } return fieldCapsResponse; } diff --git a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.test.js b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.test.js index 88e91749b11d..422364a67dd9 100644 --- a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.test.js +++ b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.test.js @@ -85,7 +85,7 @@ describe('index_patterns/field_capabilities/field_capabilities', () => { fieldsFromFieldCaps: fields.map((name) => ({ name })), }); - const fieldNames = (await getFieldCapabilities(getArgsWithCallCluster())).map( + const fieldNames = (await getFieldCapabilities(getArgsWithCallCluster())).fields.map( (field) => field.name ); expect(fieldNames).toEqual(fields); @@ -99,7 +99,7 @@ describe('index_patterns/field_capabilities/field_capabilities', () => { fieldsFromFieldCaps: shuffle(letters.map((name) => ({ name }))), }); - const fieldNames = (await getFieldCapabilities(getArgsWithCallCluster())).map( + const fieldNames = (await getFieldCapabilities(getArgsWithCallCluster())).fields.map( (field) => field.name ); expect(fieldNames).toEqual(sortedLetters); @@ -115,8 +115,8 @@ describe('index_patterns/field_capabilities/field_capabilities', () => { const args = getArgsWithCallCluster({ metaFields: ['meta1', 'meta2'] }); const resp = await getFieldCapabilities(args); - expect(resp).toHaveLength(4); - expect(resp.map((field) => field.name)).toEqual(['bar', 'foo', 'meta1', 'meta2']); + expect(resp.fields).toHaveLength(4); + expect(resp.fields.map((field) => field.name)).toEqual(['bar', 'foo', 'meta1', 'meta2']); }); }); @@ -141,7 +141,7 @@ describe('index_patterns/field_capabilities/field_capabilities', () => { fieldsFromFieldCaps: [field], }); - const resp = await getFieldCapabilities(getArgsWithCallCluster()); + const { fields: resp } = await getFieldCapabilities(getArgsWithCallCluster()); expect(resp).toHaveLength(1); expect(resp[0]).toHaveProperty(property); expect(resp[0][property]).not.toBe(footballs[0]); @@ -185,7 +185,7 @@ describe('index_patterns/field_capabilities/field_capabilities', () => { }, }); - expect(await getFieldCapabilities(getArgsWithCallCluster())).toEqual([ + expect((await getFieldCapabilities(getArgsWithCallCluster())).fields).toEqual([ { notFieldAnymore: 1 }, { notFieldAnymore: 1 }, ]); diff --git a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.ts b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.ts index 875ebb249061..7a050c8b9d80 100644 --- a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.ts +++ b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_capabilities.ts @@ -31,7 +31,7 @@ interface FieldCapabilitiesParams { * @param {Array} [indices=[]] the list of indexes to check * @param {Array} [metaFields=[]] the list of internal fields to include * @param {Object} fieldCapsOptions - * @return {Promise>} + * @return {Promise<{ fields: Array, indices: Array>}>} */ export async function getFieldCapabilities(params: FieldCapabilitiesParams) { const { callCluster, indices = [], fieldCapsOptions, filter, metaFields = [] } = params; @@ -67,5 +67,8 @@ export async function getFieldCapabilities(params: FieldCapabilitiesParams) { ) .map(mergeOverrides); - return sortBy(allFieldsUnsorted, 'name'); + return { + fields: sortBy(allFieldsUnsorted, 'name'), + indices: esFieldCaps.body.indices as string[], + }; } diff --git a/src/plugins/data_views/server/routes/fields_for.ts b/src/plugins/data_views/server/routes/fields_for.ts index 60321c718518..9e0e94bd5751 100644 --- a/src/plugins/data_views/server/routes/fields_for.ts +++ b/src/plugins/data_views/server/routes/fields_for.ts @@ -73,7 +73,7 @@ const handler: RequestHandler<{}, IQuery, IBody> = async (context, request, resp } try { - const fields = await indexPatterns.getFieldsForWildcard({ + const { fields, indices } = await indexPatterns.getFieldsForWildcard({ pattern, metaFields: parsedFields, type, @@ -85,7 +85,7 @@ const handler: RequestHandler<{}, IQuery, IBody> = async (context, request, resp }); return response.ok({ - body: { fields }, + body: { fields, indices }, headers: { 'content-type': 'application/json', }, diff --git a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/conflicts.js b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/conflicts.js index 2e7cc4a76340..343160d47ea4 100644 --- a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/conflicts.js +++ b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/conflicts.js @@ -69,6 +69,7 @@ export default function ({ getService }) { metadata_field: false, }, ], + indices: ['logs-2017.01.01', 'logs-2017.01.02'], }); })); }); diff --git a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js index 07603be1de9a..2dfcdbb35cd7 100644 --- a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js +++ b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js @@ -85,6 +85,7 @@ export default function ({ getService }) { .query({ pattern: 'basic_index' }) .expect(200, { fields: testFields, + indices: ['basic_index'], }) .then(ensureFieldsAreSorted); }); @@ -176,6 +177,7 @@ export default function ({ getService }) { metadata_field: false, }, ], + indices: ['basic_index'], }) .then(ensureFieldsAreSorted); }); @@ -186,6 +188,7 @@ export default function ({ getService }) { .query({ pattern: 'bad_index,basic_index' }) .expect(200, { fields: testFields, + indices: ['basic_index'], }); }); it('returns 404 when no patterns exist', async () => { diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.test.ts b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.test.ts index 03dd09a0dc8d..ea51c0104d77 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.test.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.test.ts @@ -75,7 +75,7 @@ describe('RuleDataClient', () => { describe('getReader()', () => { beforeEach(() => { jest.resetAllMocks(); - getFieldsForWildcardMock.mockResolvedValue(['foo']); + getFieldsForWildcardMock.mockResolvedValue({ fields: ['foo'] }); IndexPatternsFetcher.prototype.getFieldsForWildcard = getFieldsForWildcardMock; }); diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts index 7b7fead83d4e..f0fbc8196456 100644 --- a/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts +++ b/x-pack/plugins/rule_registry/server/rule_data_client/rule_data_client.ts @@ -131,7 +131,7 @@ export class RuleDataClient implements IRuleDataClient { const indexPatternsFetcher = new IndexPatternsFetcher(clusterClient); try { - const fields = await indexPatternsFetcher.getFieldsForWildcard({ + const { fields } = await indexPatternsFetcher.getFieldsForWildcard({ pattern: indexPattern, }); diff --git a/x-pack/plugins/synthetics/server/legacy_uptime/lib/requests/get_index_pattern.ts b/x-pack/plugins/synthetics/server/legacy_uptime/lib/requests/get_index_pattern.ts index fbee794b4f3d..539a2be1b7d1 100644 --- a/x-pack/plugins/synthetics/server/legacy_uptime/lib/requests/get_index_pattern.ts +++ b/x-pack/plugins/synthetics/server/legacy_uptime/lib/requests/get_index_pattern.ts @@ -29,7 +29,7 @@ export const getUptimeIndexPattern = async ({ // we have to catch errors here to avoid all endpoints returning 500 for users without APM data // (would be a bad first time experience) try { - const fields = await indexPatternsFetcher.getFieldsForWildcard({ + const { fields } = await indexPatternsFetcher.getFieldsForWildcard({ pattern: dynamicSettings.heartbeatIndices, }); diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts b/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts index 2a69b60b708b..bf433179f7dd 100644 --- a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts +++ b/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts @@ -136,18 +136,20 @@ export const requestIndexFieldSearch = async ( [] ); if (!request.onlyCheckIfIndicesExist) { - const fieldDescriptor = await Promise.all( - indicesExist.map(async (index, n) => { - if (index.startsWith('.alerts-observability')) { - return indexPatternsFetcherAsInternalUser.getFieldsForWildcard({ + const fieldDescriptor = ( + await Promise.all( + indicesExist.map(async (index, n) => { + if (index.startsWith('.alerts-observability')) { + return indexPatternsFetcherAsInternalUser.getFieldsForWildcard({ + pattern: index, + }); + } + return indexPatternsFetcherAsCurrentUser.getFieldsForWildcard({ pattern: index, }); - } - return indexPatternsFetcherAsCurrentUser.getFieldsForWildcard({ - pattern: index, - }); - }) - ); + }) + ) + ).map((response) => response.fields || []); indexFields = await formatIndexFields(beatFields, fieldDescriptor, patternList); } } From bb05fa7d2431b26093bd9746c3608a8849d2c0c0 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Thu, 25 Aug 2022 12:43:17 -0400 Subject: [PATCH 16/50] [Fleet] Remove unsupported output_id property from package policy (#139314) --- .../components/fleet_extensions/mocks.ts | 1 - x-pack/plugins/fleet/common/mocks.ts | 1 - .../plugins/fleet/common/openapi/bundled.json | 7 ++++-- .../plugins/fleet/common/openapi/bundled.yaml | 3 +++ .../schemas/new_package_policy.yaml | 1 + .../schemas/update_package_policy.yaml | 2 ++ .../package_to_package_policy.test.ts.snap | 1 - .../common/services/fixtures/aws_package.ts | 2 -- .../package_to_package_policy.test.ts | 12 +++------- .../services/package_to_package_policy.ts | 2 -- .../services/validate_package_policy.test.ts | 2 -- .../common/types/models/package_policy.ts | 1 - x-pack/plugins/fleet/dev_docs/data_model.md | 6 ++--- .../fleet/dev_docs/schema/saved_objects.mml | 1 - .../steps/step_configure_package.test.tsx | 1 - .../steps/step_define_package_policy.test.tsx | 2 -- .../steps/step_define_package_policy.tsx | 2 -- .../components/page_steps/add_integration.tsx | 1 - .../hooks/send_generate_package_policy.tsx | 2 -- .../single_page_layout/index.test.tsx | 1 - .../single_page_layout/index.tsx | 1 - .../edit_package_policy_page/index.test.tsx | 1 - .../edit_package_policy_page/index.tsx | 1 - .../epm/screens/detail/index.test.tsx | 2 -- .../package_policy_actions_menu.test.tsx | 1 - .../routes/package_policy/handlers.test.ts | 5 ---- .../server/routes/package_policy/handlers.ts | 6 ++++- .../fleet/server/saved_objects/index.ts | 4 ++-- .../security_solution/to_v7_11_0.test.ts | 4 ---- .../security_solution/to_v7_12_0.test.ts | 4 ---- .../security_solution/to_v7_13_0.test.ts | 1 - .../security_solution/to_v7_14_0.test.ts | 3 --- .../security_solution/to_v7_15_0.test.ts | 3 --- .../security_solution/to_v7_16_0.test.ts | 3 --- .../security_solution/to_v8_2_0.test.ts | 3 --- .../security_solution/to_v8_3_0.test.ts | 3 --- .../security_solution/to_v8_4_0.test.ts | 3 --- .../saved_objects/migrations/to_v8_5_0.ts | 11 +++++++++ .../package_policies_to_agent_inputs.test.ts | 1 - ...kage_policies_to_agent_permissions.test.ts | 4 ---- .../fleet/server/services/agent_policy.ts | 1 - .../services/agent_policy_create.test.ts | 1 - .../server/services/epm/packages/get.test.ts | 4 ---- .../server/services/package_policy.test.ts | 19 --------------- .../fleet/server/services/package_policy.ts | 23 +++++++------------ .../server/services/preconfiguration.test.ts | 1 - .../server/types/models/package_policy.ts | 4 +++- .../fleet_package_policy_generator.ts | 1 - .../index_fleet_endpoint_policy.ts | 1 - .../common/endpoint/generate_data.ts | 1 - .../policy/store/policy_details/index.test.ts | 2 -- .../hooks/use_update_policy.test.tsx | 1 - ...s_policy_create_extension_wrapper.test.tsx | 1 - ...ics_policy_edit_extension_wrapper.test.tsx | 1 - .../synthetics_private_location.ts | 1 - .../private_location/test_policy.ts | 1 - .../update_rules_config.ts | 1 - .../api_integration/apis/osquery/packs.ts | 1 - .../uptime/rest/sample_data/test_policy.ts | 6 ++--- .../apis/agents/upgrade.ts | 1 - .../apis/package_policy/create.ts | 18 --------------- .../apis/package_policy/delete.ts | 2 -- .../apis/package_policy/get.ts | 3 --- .../apis/package_policy/update.ts | 8 ------- .../apis/package_policy/upgrade.ts | 10 -------- .../services/endpoint_policy.ts | 1 - 66 files changed, 48 insertions(+), 181 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts index c5e39a3623d1..2af55809f1c9 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts @@ -15,7 +15,6 @@ export const getCspNewPolicyMock = (type: BenchmarkId = 'cis_k8s'): NewPackagePo namespace: 'default', policy_id: '', enabled: true, - output_id: '', inputs: [ { type: CLOUDBEAT_VANILLA, diff --git a/x-pack/plugins/fleet/common/mocks.ts b/x-pack/plugins/fleet/common/mocks.ts index b60e1ac13748..bc8880ed385a 100644 --- a/x-pack/plugins/fleet/common/mocks.ts +++ b/x-pack/plugins/fleet/common/mocks.ts @@ -15,7 +15,6 @@ export const createNewPackagePolicyMock = (): NewPackagePolicy => { namespace: 'default', enabled: true, policy_id: '93c46720-c217-11ea-9906-b5b8a21b268e', - output_id: '', package: { name: 'endpoint', title: 'Elastic Endpoint', diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index adb49b25782c..fefb3da0b0fd 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -4621,7 +4621,8 @@ "type": "string" }, "output_id": { - "type": "string" + "type": "string", + "deprecated": true }, "inputs": { "type": "array", @@ -5031,7 +5032,9 @@ "type": "string" }, "output_id": { - "type": "string" + "type": "string", + "description": "Not supported output can be set at the agent policy level only", + "deprecated": true }, "inputs": { "type": "array", diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index 3cc16afc3f41..425a457b78d1 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -2923,6 +2923,7 @@ components: type: string output_id: type: string + deprecated: true inputs: type: array items: @@ -3186,6 +3187,8 @@ components: type: string output_id: type: string + description: Not supported output can be set at the agent policy level only + deprecated: true inputs: type: array items: diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/new_package_policy.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/new_package_policy.yaml index ad400a9eb8e0..263efb36b504 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/new_package_policy.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/new_package_policy.yaml @@ -20,6 +20,7 @@ properties: type: string output_id: type: string + deprecated: true inputs: type: array items: diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/update_package_policy.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/update_package_policy.yaml index bd14910303a0..71e898017d06 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/update_package_policy.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/update_package_policy.yaml @@ -23,6 +23,8 @@ properties: type: string output_id: type: string + description: Not supported output can be set at the agent policy level only + deprecated: true inputs: type: array items: diff --git a/x-pack/plugins/fleet/common/services/__snapshots__/package_to_package_policy.test.ts.snap b/x-pack/plugins/fleet/common/services/__snapshots__/package_to_package_policy.test.ts.snap index d49743fa487f..3235ebbd9a8f 100644 --- a/x-pack/plugins/fleet/common/services/__snapshots__/package_to_package_policy.test.ts.snap +++ b/x-pack/plugins/fleet/common/services/__snapshots__/package_to_package_policy.test.ts.snap @@ -763,7 +763,6 @@ Object { ], "name": "aws-1", "namespace": "default", - "output_id": "some-output-id", "package": Object { "name": "aws", "title": "AWS", diff --git a/x-pack/plugins/fleet/common/services/fixtures/aws_package.ts b/x-pack/plugins/fleet/common/services/fixtures/aws_package.ts index 63397e484a7d..35e5b9654c17 100644 --- a/x-pack/plugins/fleet/common/services/fixtures/aws_package.ts +++ b/x-pack/plugins/fleet/common/services/fixtures/aws_package.ts @@ -1930,7 +1930,6 @@ export const INVALID_AWS_POLICY = { package: { name: 'aws', title: 'AWS', version: '0.5.3' }, enabled: true, policy_id: 'some-agent-policy-id', - output_id: 'some-output-id', inputs: [ { type: 'aws/metrics', @@ -2338,7 +2337,6 @@ export const VALID_AWS_POLICY = { package: { name: 'aws', title: 'AWS', version: '0.5.3' }, enabled: true, policy_id: 'some-agent-policy-id', - output_id: 'some-output-id', inputs: [ { type: 'aws/metrics', diff --git a/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts b/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts index 79a501140a18..f3e1121ab766 100644 --- a/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts +++ b/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts @@ -346,13 +346,12 @@ describe('Fleet - packageToPackagePolicy', () => { describe('packageToPackagePolicy', () => { it('returns package policy with default name', () => { - expect(packageToPackagePolicy(mockPackage, '1', '2')).toEqual({ + expect(packageToPackagePolicy(mockPackage, '1')).toEqual({ policy_id: '1', namespace: '', enabled: true, inputs: [], name: 'mock-package-1', - output_id: '2', package: { name: 'mock-package', title: 'Mock package', @@ -362,13 +361,12 @@ describe('Fleet - packageToPackagePolicy', () => { }); it('returns package policy with custom name', () => { - expect(packageToPackagePolicy(mockPackage, '1', '2', 'default', 'pkgPolicy-1')).toEqual({ + expect(packageToPackagePolicy(mockPackage, '1', 'default', 'pkgPolicy-1')).toEqual({ policy_id: '1', namespace: 'default', enabled: true, inputs: [], name: 'pkgPolicy-1', - output_id: '2', package: { name: 'mock-package', title: 'Mock package', @@ -382,7 +380,6 @@ describe('Fleet - packageToPackagePolicy', () => { packageToPackagePolicy( mockPackage, '1', - '2', 'mock-namespace', 'pkgPolicy-1', 'Test description' @@ -394,7 +391,6 @@ describe('Fleet - packageToPackagePolicy', () => { name: 'pkgPolicy-1', namespace: 'mock-namespace', description: 'Test description', - output_id: '2', package: { name: 'mock-package', title: 'Mock package', @@ -410,14 +406,13 @@ describe('Fleet - packageToPackagePolicy', () => { } as unknown as PackageInfo; expect( - packageToPackagePolicy(mockPackageWithPolicyTemplates, '1', '2', 'default', 'pkgPolicy-1') + packageToPackagePolicy(mockPackageWithPolicyTemplates, '1', 'default', 'pkgPolicy-1') ).toEqual({ policy_id: '1', namespace: 'default', enabled: true, inputs: [{ type: 'foo', enabled: true, streams: [] }], name: 'pkgPolicy-1', - output_id: '2', package: { name: 'mock-package', title: 'Mock package', @@ -431,7 +426,6 @@ describe('Fleet - packageToPackagePolicy', () => { packageToPackagePolicy( AWS_PACKAGE as unknown as PackageInfo, 'some-agent-policy-id', - 'some-output-id', 'default', 'aws-1' ) diff --git a/x-pack/plugins/fleet/common/services/package_to_package_policy.ts b/x-pack/plugins/fleet/common/services/package_to_package_policy.ts index 3b8a384ede0b..cea02893e849 100644 --- a/x-pack/plugins/fleet/common/services/package_to_package_policy.ts +++ b/x-pack/plugins/fleet/common/services/package_to_package_policy.ts @@ -162,7 +162,6 @@ export const packageToPackagePolicyInputs = ( export const packageToPackagePolicy = ( packageInfo: PackageInfo, agentPolicyId: string, - outputId: string, namespace: string = '', packagePolicyName?: string, description?: string, @@ -179,7 +178,6 @@ export const packageToPackagePolicy = ( }, enabled: true, policy_id: agentPolicyId, - output_id: outputId, inputs: packageToPackagePolicyInputs(packageInfo, integrationToEnable), vars: undefined, }; diff --git a/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts b/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts index 7de52ac07bef..c3844b8a06bf 100644 --- a/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts +++ b/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts @@ -163,7 +163,6 @@ describe('Fleet - validatePackagePolicy()', () => { namespace: 'default', policy_id: 'test-policy', enabled: true, - output_id: 'test-output', inputs: [ { type: 'foo', @@ -651,7 +650,6 @@ describe('Fleet - validatePackagePolicy()', () => { ], name: 'linux-3d13ada6-a9ae-46df-8e57-ff5050f4b671', namespace: 'default', - output_id: '', package: { name: 'linux', title: 'Linux Metrics', diff --git a/x-pack/plugins/fleet/common/types/models/package_policy.ts b/x-pack/plugins/fleet/common/types/models/package_policy.ts index 047bd9a403d9..ec6b04ae64fc 100644 --- a/x-pack/plugins/fleet/common/types/models/package_policy.ts +++ b/x-pack/plugins/fleet/common/types/models/package_policy.ts @@ -65,7 +65,6 @@ export interface NewPackagePolicy { enabled: boolean; is_managed?: boolean; policy_id: string; - output_id: string; package?: PackagePolicyPackage; inputs: NewPackagePolicyInput[]; vars?: PackagePolicyConfigRecord; diff --git a/x-pack/plugins/fleet/dev_docs/data_model.md b/x-pack/plugins/fleet/dev_docs/data_model.md index 1399cec4c331..483eabb4ed56 100644 --- a/x-pack/plugins/fleet/dev_docs/data_model.md +++ b/x-pack/plugins/fleet/dev_docs/data_model.md @@ -1,6 +1,7 @@ # Fleet Data Model The Fleet plugin has 3 sources of data that it reads and writes to, these large categories are: + - **Package Registry**: read-only data source for retrieving packages published by Elastic - **`.fleet-*` Indices**: read & write data source for interacting with Elastic Agent policies, actions, and enrollment tokens - **Saved Objects**: read & write data source for storing installed packages, configured policies, outputs, and other settings @@ -65,6 +66,7 @@ This document is intended to outline what each type is for, the primary places i any caveats regarding the history of that saved object type. At this point in time, all types are currently: + - `hidden: false` - `namespaceType: agnostic` - `management.importableAndExportable: false` @@ -81,7 +83,6 @@ Tracks the Fleet server host addresses and whether or not the cluster has been s Can be accessed via the APIs exposed in the [server's settings service](../server/services/settings.ts). - ### `ingest-agent-policies` - Constant in code: `AGENT_POLICY_SAVED_OBJECT_TYPE` @@ -102,7 +103,6 @@ enrolled agents. - Migrations: 7.10.0, 7.11.0, 7.12.0, 7.13.0, 7.14.0, 7.15.0 - References to other objects: - `policy_id` - ID that points to an agent policy (`ingest-agent-policies`) - - `output_id` - ID that points to an output (`ingest-outputs`) Contains the configuration for a specific instance of a package integration as configured for an agent policy. @@ -134,7 +134,7 @@ used for other types of outputs like separate monitoring clusters, Logstash, etc - `package_assets` - array of original file contents of the package as it was installed - `package_assets.id` - Saved Object ID for a `epm-package-assets` type - `package_assets.type` - Saved Object type for the asset. As of now, only `epm-packages-assets` are supported. - + Contains metadata on an installed integration package including references to all assets installed in Kibana and Elasticsearch. This allows for easy cleanup when a package is removed or upgraded. diff --git a/x-pack/plugins/fleet/dev_docs/schema/saved_objects.mml b/x-pack/plugins/fleet/dev_docs/schema/saved_objects.mml index 9f73a15bed2e..5755537191b1 100644 --- a/x-pack/plugins/fleet/dev_docs/schema/saved_objects.mml +++ b/x-pack/plugins/fleet/dev_docs/schema/saved_objects.mml @@ -50,7 +50,6 @@ classDiagram policy_id enabled package - output_id // Inputs inputs.type inputs.enabled diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_configure_package.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_configure_package.test.tsx index a7722524fc30..776ee1957eaf 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_configure_package.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_configure_package.test.tsx @@ -105,7 +105,6 @@ describe('StepConfigurePackage', () => { namespace: 'default', policy_id: '', enabled: true, - output_id: '', inputs: [ { type: 'logfile', diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx index 7dd7d23b3874..178d8c8c331d 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx @@ -112,7 +112,6 @@ describe('StepDefinePackagePolicy', () => { namespace: 'default', policy_id: '', enabled: true, - output_id: '', inputs: [], }; testRenderer = createFleetTestRendererMock(); @@ -137,7 +136,6 @@ describe('StepDefinePackagePolicy', () => { name: 'apache-1', namespace: 'default', policy_id: 'agent-policy-1', - output_id: '', package: { name: 'apache', title: 'Apache', diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx index 37e408e3cf27..09080789d62b 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx @@ -112,7 +112,6 @@ export const StepDefinePackagePolicy: React.FunctionComponent<{ packageToPackagePolicy( packageInfo, agentPolicy?.id || '', - packagePolicy.output_id, packagePolicy.namespace, packagePolicy.name, packagePolicy.description, @@ -134,7 +133,6 @@ export const StepDefinePackagePolicy: React.FunctionComponent<{ packageToPackagePolicy( packageInfo, agentPolicy?.id || '', - packagePolicy.output_id, packagePolicy.namespace, packagePolicy.name || incrementedName, packagePolicy.description, diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx index 3727dc38cf58..bce4d71b0425 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx @@ -94,7 +94,6 @@ export const AddIntegrationPageStep: React.FC = (props namespace: 'default', policy_id: '', enabled: true, - output_id: '', inputs: [], }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/send_generate_package_policy.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/send_generate_package_policy.tsx index 3b6e70ab9632..f4cf4e3a5910 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/send_generate_package_policy.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/send_generate_package_policy.tsx @@ -32,14 +32,12 @@ export const sendGeneratePackagePolicy = async ( namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], }; const packagePolicy = packageToPackagePolicy( packageInfo, agentPolicyId, - defaultPolicy.output_id, defaultPolicy.namespace, defaultPolicy.name, defaultPolicy.description, diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.test.tsx index 427db14295a3..88061897abf7 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.test.tsx @@ -253,7 +253,6 @@ describe('when on the package policy create page', () => { ], name: 'nginx-1', namespace: 'default', - output_id: '', package: { name: 'nginx', title: 'Nginx', diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx index d57f246ecbb4..51a8826456fc 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx @@ -143,7 +143,6 @@ export const CreatePackagePolicySinglePage: CreatePackagePolicyParams = ({ namespace: 'default', policy_id: '', enabled: true, - output_id: '', inputs: [], }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx index 7372bb0d7252..df42a287ffa1 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx @@ -152,7 +152,6 @@ const mockPackagePolicy = { package: { name: 'nginx', title: 'Nginx', version: '1.3.0' }, enabled: true, policy_id: 'agent-policy-1', - output_id: '', inputs: [ { type: 'logfile', diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx index 9381dfcbe3bd..c0f9c95e1e0e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx @@ -110,7 +110,6 @@ export const EditPackagePolicyForm = memo<{ namespace: '', policy_id: '', enabled: true, - output_id: '', inputs: [], version: '', }); diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.test.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.test.tsx index 693dee99ebf6..49a8cbeb37d2 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/index.test.tsx @@ -553,7 +553,6 @@ On Windows, the module was tested with Nginx installed from the Chocolatey repos namespace: 'default', policy_id: '521c1b70-3976-11eb-ad1c-3baa423084d9', enabled: true, - output_id: '', inputs: [ { type: 'logfile', @@ -632,7 +631,6 @@ On Windows, the module was tested with Nginx installed from the Chocolatey repos namespace: 'default', policy_id: '125c1b70-3976-11eb-ad1c-3baa423085y6', enabled: true, - output_id: '', inputs: [ { type: 'logfile', diff --git a/x-pack/plugins/fleet/public/components/package_policy_actions_menu.test.tsx b/x-pack/plugins/fleet/public/components/package_policy_actions_menu.test.tsx index b1eff0b4b3b3..cb4f89be5d3c 100644 --- a/x-pack/plugins/fleet/public/components/package_policy_actions_menu.test.tsx +++ b/x-pack/plugins/fleet/public/components/package_policy_actions_menu.test.tsx @@ -72,7 +72,6 @@ function createMockPackagePolicy( updated_by: '', policy_id: '', enabled: true, - output_id: '', namespace: 'default', inputs: [], revision: 1, diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts index 5e6785754014..57879eeea058 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts @@ -128,7 +128,6 @@ describe('When calling package policy', () => { description: '', policy_id: 'a5ca00c0-b30c-11ea-9732-1bb05811278c', enabled: true, - output_id: '', inputs: [], namespace: 'default', package: { name: 'endpoint', title: 'Elastic Endpoint', version: '0.5.0' }, @@ -222,7 +221,6 @@ describe('When calling package policy', () => { ], name: 'endpoint-1', namespace: 'default', - output_id: '', package: { name: 'endpoint', title: 'Elastic Endpoint', @@ -254,7 +252,6 @@ describe('When calling package policy', () => { ], name: 'endpoint-1', namespace: 'default', - output_id: '', package: { name: 'endpoint', title: 'Elastic Endpoint', @@ -322,7 +319,6 @@ describe('When calling package policy', () => { description: 'desc', policy_id: '2', enabled: true, - output_id: '3', inputs: [ { type: 'logfile', @@ -396,7 +392,6 @@ describe('When calling package policy', () => { description: '', policy_id: '3', enabled: false, - output_id: '', inputs: [ { type: 'metrics', diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts index 0b5f71910cfa..9d1cbac194bc 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts @@ -174,6 +174,8 @@ export const createPackagePolicyHandler: FleetRequestHandler< const esClient = coreContext.elasticsearch.client.asInternalUser; const user = appContextService.getSecurity()?.authc.getCurrentUser(request) || undefined; const { force, ...newPolicy } = request.body; + // TODO Remove deprecated APIs https://github.com/elastic/kibana/issues/121485 + delete newPolicy.output_id; const spaceId = fleetContext.spaceId; try { const newPackagePolicy = await packagePolicyService.enrichPolicyWithDefaultsFromPackage( @@ -234,6 +236,8 @@ export const updatePackagePolicyHandler: RequestHandler< } const { force, ...body } = request.body; + // TODO Remove deprecated APIs https://github.com/elastic/kibana/issues/121485 + delete body.output_id; // removed fields not recognized by schema const packagePolicyInputs = packagePolicy.inputs.map((input) => { const newInput = { @@ -247,6 +251,7 @@ export const updatePackagePolicyHandler: RequestHandler< delete newInput.compiled_input; return newInput; }); + // listing down accepted properties, because loaded packagePolicy contains some that are not accepted in update let newData = { ...body, @@ -255,7 +260,6 @@ export const updatePackagePolicyHandler: RequestHandler< namespace: body.namespace ?? packagePolicy.namespace, policy_id: body.policy_id ?? packagePolicy.policy_id, enabled: body.enabled ?? packagePolicy.enabled, - output_id: body.output_id ?? packagePolicy.output_id, package: body.package ?? packagePolicy.package, inputs: body.inputs ?? packagePolicyInputs, vars: body.vars ?? packagePolicy.vars, diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 71134a67ca6d..bd031cf9b027 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -45,7 +45,7 @@ import { migrateAgentPolicyToV840, migratePackagePolicyToV840, } from './migrations/to_v8_4_0'; -import { migrateAgentPolicyToV850 } from './migrations/to_v8_5_0'; +import { migratePackagePolicyToV850, migrateAgentPolicyToV850 } from './migrations/to_v8_5_0'; /* * Saved object types and mappings @@ -153,7 +153,6 @@ const getSavedObjectTypes = ( enabled: { type: 'boolean' }, is_managed: { type: 'boolean' }, policy_id: { type: 'keyword' }, - output_id: { type: 'keyword' }, package: { properties: { name: { type: 'keyword' }, @@ -223,6 +222,7 @@ const getSavedObjectTypes = ( '8.2.0': migratePackagePolicyToV820, '8.3.0': migratePackagePolicyToV830, '8.4.0': migratePackagePolicyToV840, + '8.5.0': migratePackagePolicyToV850, }, }, [PACKAGES_SAVED_OBJECT_TYPE]: { diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_11_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_11_0.test.ts index 4461cf288dc9..cd251e4dcdde 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_11_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_11_0.test.ts @@ -27,7 +27,6 @@ describe('7.11.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -66,7 +65,6 @@ describe('7.11.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -122,7 +120,6 @@ describe('7.11.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -154,7 +151,6 @@ describe('7.11.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_12_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_12_0.test.ts index ef26ab759999..7f7ed90a9167 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_12_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_12_0.test.ts @@ -27,7 +27,6 @@ describe('7.12.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -70,7 +69,6 @@ describe('7.12.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -124,7 +122,6 @@ describe('7.12.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -156,7 +153,6 @@ describe('7.12.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_13_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_13_0.test.ts index be6888f80240..f633974713b4 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_13_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_13_0.test.ts @@ -29,7 +29,6 @@ describe('7.13.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_14_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_14_0.test.ts index 3340d4af0085..4ef4d79fe9a3 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_14_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_14_0.test.ts @@ -33,7 +33,6 @@ describe('7.14.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -235,7 +234,6 @@ describe('7.14.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -267,7 +265,6 @@ describe('7.14.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_15_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_15_0.test.ts index 38866e7f971d..25ec0c74f7cb 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_15_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_15_0.test.ts @@ -38,7 +38,6 @@ describe('7.15.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -192,7 +191,6 @@ describe('7.15.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -224,7 +222,6 @@ describe('7.15.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_16_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_16_0.test.ts index a062f3f4097f..4ca2f19682b2 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_16_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v7_16_0.test.ts @@ -40,7 +40,6 @@ describe('7.16.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -224,7 +223,6 @@ describe('7.16.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -256,7 +254,6 @@ describe('7.16.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_2_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_2_0.test.ts index c6e853569b59..e84d9de623c6 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_2_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_2_0.test.ts @@ -31,7 +31,6 @@ describe('8.2.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -133,7 +132,6 @@ describe('8.2.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -165,7 +163,6 @@ describe('8.2.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_3_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_3_0.test.ts index d5eb8c5a8654..13c66f565e14 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_3_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_3_0.test.ts @@ -26,7 +26,6 @@ describe('8.3.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -101,7 +100,6 @@ describe('8.3.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -133,7 +131,6 @@ describe('8.3.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_4_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_4_0.test.ts index 5184498fc529..d0555c5da6d9 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_4_0.test.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/security_solution/to_v8_4_0.test.ts @@ -26,7 +26,6 @@ describe('8.4.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -97,7 +96,6 @@ describe('8.4.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', @@ -129,7 +127,6 @@ describe('8.4.0 Endpoint Package Policy migration', () => { policy_id: '', enabled: true, namespace: '', - output_id: '', revision: 0, updated_at: '', updated_by: '', diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_5_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_5_0.ts index 9cbcc85c4693..cf835ec87c94 100644 --- a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_5_0.ts +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_5_0.ts @@ -7,8 +7,19 @@ import type { SavedObjectMigrationFn } from '@kbn/core/server'; +import type { PackagePolicy } from '../../../common'; import type { AgentPolicy } from '../../types'; +export const migratePackagePolicyToV850: SavedObjectMigrationFn = ( + packagePolicyDoc, + migrationContext +) => { + // @ts-expect-error output_id property does not exists anymore + delete packagePolicyDoc.attributes.output_id; + + return packagePolicyDoc; +}; + export const migrateAgentPolicyToV850: SavedObjectMigrationFn< Exclude & { package_policies: string[]; diff --git a/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_inputs.test.ts b/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_inputs.test.ts index 82a7612cc819..5914da1716ef 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_inputs.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_inputs.test.ts @@ -51,7 +51,6 @@ describe('Fleet - storedPackagePoliciesToAgentInputs', () => { updated_by: '', policy_id: '', enabled: true, - output_id: '', namespace: 'default', inputs: [], revision: 1, diff --git a/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_permissions.test.ts b/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_permissions.test.ts index a60b5c68d05a..3c490268af09 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_permissions.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/package_policies_to_agent_permissions.test.ts @@ -145,7 +145,6 @@ describe('storedPackagePoliciesToAgentPermissions()', () => { updated_by: '', revision: 1, policy_id: '', - output_id: '', }, ]; @@ -240,7 +239,6 @@ describe('storedPackagePoliciesToAgentPermissions()', () => { updated_by: '', revision: 1, policy_id: '', - output_id: '', }, ]; @@ -340,7 +338,6 @@ describe('storedPackagePoliciesToAgentPermissions()', () => { updated_by: '', revision: 1, policy_id: '', - output_id: '', }, ]; @@ -449,7 +446,6 @@ describe('storedPackagePoliciesToAgentPermissions()', () => { updated_by: '', revision: 1, policy_id: '', - output_id: '', }, ]; diff --git a/x-pack/plugins/fleet/server/services/agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policy.ts index 9c70e4a58c38..1e833377a337 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.ts @@ -972,7 +972,6 @@ export async function addPackageToAgentPolicy( const basePackagePolicy = packageToPackagePolicy( packageInfo, agentPolicy.id, - defaultOutput.id, agentPolicy.namespace ?? 'default', packagePolicyName, packagePolicyDescription diff --git a/x-pack/plugins/fleet/server/services/agent_policy_create.test.ts b/x-pack/plugins/fleet/server/services/agent_policy_create.test.ts index c477d0839555..1231e99f2865 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy_create.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy_create.test.ts @@ -44,7 +44,6 @@ function getPackagePolicy(name: string, policyId = '') { namespace: 'default', enabled: true, policy_id: policyId, - output_id: '', inputs: [], }; } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index 41bbaeab494d..af168a8cc161 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -42,7 +42,6 @@ describe('When using EPM `get` services', () => { namespace: 'default', policy_id: '22222-22222-2222-2222', enabled: true, - output_id: '', inputs: [], package: { name: 'system', title: 'System', version: '0.10.4' }, revision: 1, @@ -66,7 +65,6 @@ describe('When using EPM `get` services', () => { package: { name: 'system', title: 'System', version: '0.10.4' }, enabled: true, policy_id: '11111-111111-11111-11111', // << duplicate id with plicy below - output_id: 'ca111b80-43c1-11eb-84bf-7177b74381c5', inputs: [], revision: 1, created_at: '2020-12-21T19:22:04.902Z', @@ -89,7 +87,6 @@ describe('When using EPM `get` services', () => { namespace: 'default', policy_id: '11111-111111-11111-11111', enabled: true, - output_id: '', inputs: [], package: { name: 'system', title: 'System', version: '0.10.4' }, revision: 1, @@ -113,7 +110,6 @@ describe('When using EPM `get` services', () => { namespace: 'default', policy_id: '33333-33333-333333-333333', enabled: true, - output_id: '', inputs: [], package: { name: 'system', title: 'System', version: '0.10.4' }, revision: 1, diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index b2caca6cae90..3f11900d87e7 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -1228,7 +1228,6 @@ describe('Package policy service', () => { inputs: [], name: 'endpoint-1', namespace: 'default', - output_id: '', package: { name: 'endpoint', title: 'Elastic Endpoint', @@ -1409,7 +1408,6 @@ describe('Package policy service', () => { }, enabled: true, policy_id: '1e6d0690-b995-11ec-a355-d35391e25881', - output_id: '', inputs: [ { type: 'cloudbeat', @@ -1497,7 +1495,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -1585,7 +1582,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -1683,7 +1679,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -1781,7 +1776,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -1951,7 +1945,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2171,7 +2164,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2266,7 +2258,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2368,7 +2359,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2467,7 +2457,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2566,7 +2555,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2737,7 +2725,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -2958,7 +2945,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -3052,7 +3038,6 @@ describe('Package policy service', () => { namespace: 'default', enabled: true, policy_id: 'xxxx', - output_id: 'xxxx', package: { name: 'test-package', title: 'Test Package', @@ -3193,7 +3178,6 @@ describe('Package policy service', () => { package: { name: 'apache', title: 'Apache', version: '1.0.0' }, enabled: true, policy_id: '1', - output_id: '', inputs: [ { enabled: false, @@ -3270,7 +3254,6 @@ describe('Package policy service', () => { package: { name: 'aws', title: 'AWS', version: '1.0.0' }, enabled: true, policy_id: '1', - output_id: '', inputs: [ { type: 'aws/metrics', @@ -3297,7 +3280,6 @@ describe('Package policy service', () => { description: 'desc', enabled: false, policy_id: '2', - output_id: '3', inputs: [ { type: 'logfile', @@ -3332,7 +3314,6 @@ describe('Package policy service', () => { package: { name: 'apache', title: 'Apache', version: '1.0.0' }, enabled: false, policy_id: '2', - output_id: '3', inputs: [ { enabled: true, diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index f7668f8fe19b..0d471133186f 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -72,7 +72,6 @@ import type { ExternalCallback } from '..'; import { storedPackagePolicyToAgentInputs } from './agent_policies'; import { agentPolicyService } from './agent_policy'; import { getDataOutputForAgentPolicy } from './agent_policies'; -import { outputService } from './output'; import { getPackageInfo, getInstallation, ensureInstalledPackage } from './epm/packages'; import { getAssetsData } from './epm/packages/assets'; import { compileTemplate } from './epm/agent/agent'; @@ -869,7 +868,6 @@ class PackagePolicyService implements PackagePolicyServiceInterface { description: newPolicy.description ?? '', enabled: newPolicy.enabled ?? true, policy_id: newPolicy.policy_id ?? agentPolicyId, - output_id: newPolicy.output_id ?? '', inputs: newPolicy.inputs[0]?.streams ? newPolicy.inputs : inputs, vars: newPolicy.vars || newPP.vars, }; @@ -890,7 +888,7 @@ class PackagePolicyService implements PackagePolicyServiceInterface { skipArchive: true, }); if (packageInfo) { - return packageToPackagePolicy(packageInfo, '', ''); + return packageToPackagePolicy(packageInfo, ''); } } @@ -901,19 +899,14 @@ class PackagePolicyService implements PackagePolicyServiceInterface { ): Promise { const pkgInstall = await getInstallation({ savedObjectsClient: soClient, pkgName, logger }); if (pkgInstall) { - const [packageInfo, defaultOutputId] = await Promise.all([ - getPackageInfo({ - savedObjectsClient: soClient, - pkgName: pkgInstall.name, - pkgVersion: pkgInstall.version, - }), - outputService.getDefaultDataOutputId(soClient), - ]); + const packageInfo = await getPackageInfo({ + savedObjectsClient: soClient, + pkgName: pkgInstall.name, + pkgVersion: pkgInstall.version, + }); + if (packageInfo) { - if (!defaultOutputId) { - throw new Error('Default output is not set'); - } - return packageToPackagePolicy(packageInfo, '', defaultOutputId); + return packageToPackagePolicy(packageInfo, ''); } } } diff --git a/x-pack/plugins/fleet/server/services/preconfiguration.test.ts b/x-pack/plugins/fleet/server/services/preconfiguration.test.ts index 245ab2316cb0..df02c6dd27e7 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration.test.ts @@ -928,7 +928,6 @@ describe('comparePreconfiguredPolicyToCurrent', () => { created_by: 'system', inputs: [], policy_id: 'abc123', - output_id: 'default', }, ], }; diff --git a/x-pack/plugins/fleet/server/types/models/package_policy.ts b/x-pack/plugins/fleet/server/types/models/package_policy.ts index e0c8cf63ce62..afceb08b3e89 100644 --- a/x-pack/plugins/fleet/server/types/models/package_policy.ts +++ b/x-pack/plugins/fleet/server/types/models/package_policy.ts @@ -89,7 +89,8 @@ const PackagePolicyBaseSchema = { version: schema.string(), }) ), - output_id: schema.string(), + // Deprecated TODO create remove issue + output_id: schema.maybe(schema.string()), inputs: schema.arrayOf(schema.object(PackagePolicyInputsSchema)), vars: schema.maybe(ConfigRecordSchema), }; @@ -112,6 +113,7 @@ const CreatePackagePolicyProps = { version: schema.string(), }) ), + // Deprecated TODO create remove issue output_id: schema.maybe(schema.string()), inputs: schema.arrayOf( schema.object({ diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts index fef93fe1e674..248d27236f49 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_package_policy_generator.ts @@ -30,7 +30,6 @@ export class FleetPackagePolicyGenerator extends BaseDataGenerator { updated_by: '', policy_id: '', enabled: true, - output_id: '', inputs: [ { type: 'endpoint', @@ -259,7 +258,6 @@ describe('policy details: ', () => { description: '', policy_id: '', enabled: true, - output_id: '', inputs: [ { type: 'endpoint', diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx index a5b4b7fab01e..fb7687d28f6e 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/hooks/use_update_policy.test.tsx @@ -30,7 +30,6 @@ describe('useBarChartsHooks', () => { namespace: 'default', policy_id: 'ae774160-8e49-11eb-aba5-99269d21ba6e', enabled: true, - output_id: '', inputs: [ { type: 'synthetics/http', diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.test.tsx index 977f2a94660c..1749a29ffa4f 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.test.tsx @@ -50,7 +50,6 @@ const defaultNewPolicy: NewPackagePolicy = { namespace: 'default', policy_id: 'ae774160-8e49-11eb-aba5-99269d21ba6e', enabled: true, - output_id: '', inputs: [ { type: 'synthetics/http', diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.test.tsx index ed7f02a15982..28eeafc00adc 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.test.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.test.tsx @@ -50,7 +50,6 @@ const defaultNewPolicy: NewPackagePolicy = { namespace: 'default', policy_id: 'ae774160-8e49-11eb-aba5-99269d21ba6e', enabled: true, - output_id: '', inputs: [ { type: 'synthetics/http', diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts index 78c8193f8f58..c3c54c5aab81 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts @@ -69,7 +69,6 @@ export class SyntheticsPrivateLocation { newPolicy.name = `${config[ConfigKey.NAME]}-${locName}-${spaceId}`; } - newPolicy.output_id = ''; newPolicy.namespace = 'default'; const { formattedPolicy } = formatSyntheticsPolicy(newPolicy, config.type, { diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts index 2082faa6ed9d..597045ea4597 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts @@ -11,7 +11,6 @@ export const testMonitorPolicy = { package: { name: 'synthetics', title: 'Elastic Synthetics', version: '0.9.10' }, enabled: true, policy_id: '', - output_id: 'fleet-default-output', inputs: [ { type: 'synthetics/http', diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts b/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts index 0a645f7c4d4c..b5d92e2daec3 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts @@ -60,7 +60,6 @@ export default function ({ getService }: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'cloud_security_posture', diff --git a/x-pack/test/api_integration/apis/osquery/packs.ts b/x-pack/test/api_integration/apis/osquery/packs.ts index dc019bffeec6..9d00249a4e1b 100644 --- a/x-pack/test/api_integration/apis/osquery/packs.ts +++ b/x-pack/test/api_integration/apis/osquery/packs.ts @@ -93,7 +93,6 @@ export default function ({ getService }: FtrProviderContext) { }, inputs: [], namespace: 'default', - output_id: '', policy_id: hostedPolicy.id, name: 'TEST', description: '123', diff --git a/x-pack/test/api_integration/apis/uptime/rest/sample_data/test_policy.ts b/x-pack/test/api_integration/apis/uptime/rest/sample_data/test_policy.ts index f31704302caf..5e6795ba86ef 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/sample_data/test_policy.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/sample_data/test_policy.ts @@ -20,8 +20,7 @@ export const getTestSyntheticsPolicy = ( namespace: 'default', package: { name: 'synthetics', title: 'Elastic Synthetics', version: '0.10.2' }, enabled: true, - policy_id: '27337270-22ed-11ed-8c6b-09a2d21dfbc3', - output_id: '', + policy_id: '5347cd10-0368-11ed-8df7-a7424c6f5167', inputs: [ { type: 'synthetics/http', @@ -308,8 +307,7 @@ export const getTestProjectSyntheticsPolicy = ( namespace: 'default', package: { name: 'synthetics', title: 'Elastic Synthetics', version: '0.10.2' }, enabled: true, - policy_id: 'd70a46e0-22ea-11ed-8c6b-09a2d21dfbc3', - output_id: '', + policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', inputs: [ { type: 'synthetics/http', diff --git a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts index 03ef3c533dba..9b0a6586e1c2 100644 --- a/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/agents/upgrade.ts @@ -324,7 +324,6 @@ export default function (providerContext: FtrProviderContext) { attributes: { policy_id: 'fleet-server-policy', name: 'Fleet Server', - output_id: 'default', package: { name: 'fleet_server', }, diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/create.ts b/x-pack/test/fleet_api_integration/apis/package_policy/create.ts index 4a4ac33623b8..3bdbd06cf7f0 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/create.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/create.ts @@ -82,7 +82,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: hostedPolicy.id, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -108,7 +107,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: hostedPolicy.id, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -136,7 +134,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -162,7 +159,6 @@ export default function (providerContext: FtrProviderContext) { namespace: '', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -183,7 +179,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'InvalidNamespace', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -202,7 +197,6 @@ export default function (providerContext: FtrProviderContext) { 'testlength😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -223,7 +217,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'endpoint', @@ -242,7 +235,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'endpoint', @@ -263,7 +255,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -281,7 +272,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -311,7 +301,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: otherAgentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -329,7 +318,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -350,7 +338,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { enabled: true, @@ -386,7 +373,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { enabled: true, @@ -426,7 +412,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { enabled: true, @@ -490,7 +475,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { type: 'logfile', @@ -527,7 +511,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { type: 'logfile', @@ -564,7 +547,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { type: 'logfile', diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts b/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts index e95fbc9ad3df..89328d4b6140 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts @@ -61,7 +61,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicy.id, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -194,7 +193,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicy.id, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts index dbfb8109a2c1..d46aea0dbbd1 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts @@ -64,7 +64,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -129,7 +128,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -219,7 +217,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/update.ts b/x-pack/test/fleet_api_integration/apis/package_policy/update.ts index d1fa97b715b7..2f82e4ca7265 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/update.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/update.ts @@ -80,7 +80,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -99,7 +98,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -134,7 +132,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -154,7 +151,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -178,7 +174,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: managedAgentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -198,7 +193,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -228,7 +222,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: otherAgentPolicyId, enabled: true, - output_id: '', inputs: [], package: { name: 'filetest', @@ -249,7 +242,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'updated_namespace', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { enabled: true, diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts index 4a113714dc32..7e280357ff5c 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/upgrade.ts @@ -78,7 +78,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -200,7 +199,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -315,7 +313,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -420,7 +417,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -524,7 +520,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -618,7 +613,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -716,7 +710,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -816,7 +809,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -948,7 +940,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', @@ -1088,7 +1079,6 @@ export default function (providerContext: FtrProviderContext) { namespace: 'default', policy_id: agentPolicyId, enabled: true, - output_id: '', inputs: [ { policy_template: 'package_policy_upgrade', diff --git a/x-pack/test/security_solution_endpoint/services/endpoint_policy.ts b/x-pack/test/security_solution_endpoint/services/endpoint_policy.ts index f9ba6a123ac6..9d90e2530c18 100644 --- a/x-pack/test/security_solution_endpoint/services/endpoint_policy.ts +++ b/x-pack/test/security_solution_endpoint/services/endpoint_policy.ts @@ -190,7 +190,6 @@ export function EndpointPolicyTestResourcesProvider({ getService }: FtrProviderC description: 'Protect the worlds data - but in the East Coast', policy_id: agentPolicy!.id, enabled: true, - output_id: '', inputs: [ { type: 'endpoint', From dbcee0cc734ae3729118d7223d65df47b2554b49 Mon Sep 17 00:00:00 2001 From: Kyle Pollich Date: Thu, 25 Aug 2022 13:23:59 -0400 Subject: [PATCH 17/50] Overwrite default download source to prevent collisions (#139494) --- x-pack/plugins/fleet/server/services/download_source.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/fleet/server/services/download_source.ts b/x-pack/plugins/fleet/server/services/download_source.ts index b4261008e5c3..e95e7eee014f 100644 --- a/x-pack/plugins/fleet/server/services/download_source.ts +++ b/x-pack/plugins/fleet/server/services/download_source.ts @@ -63,7 +63,7 @@ class DownloadSourceService { public async create( soClient: SavedObjectsClientContract, downloadSource: DownloadSourceBase, - options?: { id?: string } + options?: { id?: string; overwrite?: boolean } ): Promise { const data: DownloadSourceAttributes = downloadSource; @@ -89,6 +89,7 @@ class DownloadSourceService { data, { id: options?.id, + overwrite: options?.overwrite ?? false, } ); return savedObjectToDownloadSource(newSo); @@ -171,6 +172,7 @@ class DownloadSourceService { return await this.create(soClient, newDefaultDS, { id: DEFAULT_DOWNLOAD_SOURCE_ID, + overwrite: true, }); } From 2187087c44bd45c952585442836165109759a35d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:51:40 -0500 Subject: [PATCH 18/50] Update dependency core-js to ^3.25.0 (main) (#138214) * Update dependency core-js to ^3.25.0 * dedupe * update corejs version Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jonathan Budzenski --- package.json | 2 +- packages/kbn-babel-preset/node_preset.js | 2 +- packages/kbn-babel-preset/webpack_preset.js | 2 +- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 32dadf55d2d0..643aa57db347 100644 --- a/package.json +++ b/package.json @@ -398,7 +398,7 @@ "constate": "^3.3.2", "content-disposition": "^0.5.4", "copy-to-clipboard": "^3.0.8", - "core-js": "^3.23.5", + "core-js": "^3.25.0", "cronstrue": "^1.51.0", "cuid": "^2.1.8", "cytoscape": "^3.10.0", diff --git a/packages/kbn-babel-preset/node_preset.js b/packages/kbn-babel-preset/node_preset.js index 8fb06d0c293b..5b50e9135498 100644 --- a/packages/kbn-babel-preset/node_preset.js +++ b/packages/kbn-babel-preset/node_preset.js @@ -31,7 +31,7 @@ module.exports = (_, options = {}) => { // Because of that we should use for that value the same version we install // in the package.json in order to have the same polyfills between the environment // and the tests - corejs: '3.23.5', + corejs: '3.25.0', bugfixes: true, ...(options['@babel/preset-env'] || {}), diff --git a/packages/kbn-babel-preset/webpack_preset.js b/packages/kbn-babel-preset/webpack_preset.js index 02bc6270a8b0..e3b52cc1e5e1 100644 --- a/packages/kbn-babel-preset/webpack_preset.js +++ b/packages/kbn-babel-preset/webpack_preset.js @@ -18,7 +18,7 @@ module.exports = (_, options = {}) => { modules: false, // Please read the explanation for this // in node_preset.js - corejs: '3.23.5', + corejs: '3.25.0', bugfixes: true, }, ], diff --git a/yarn.lock b/yarn.lock index c5e1ab95e5b7..a65095864346 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11834,10 +11834,10 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.9: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== -core-js@^3.0.4, core-js@^3.23.5, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: - version "3.23.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475" - integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg== +core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3, core-js@^3.25.0: + version "3.25.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb" + integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA== core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" From 568c2603694ba45e57303829afe4df85688f4b12 Mon Sep 17 00:00:00 2001 From: Jiawei Wu <74562234+JiaweiWu@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:36:23 -0600 Subject: [PATCH 19/50] [RAM] Fix blank rule details page when displaying SIEM rules and small alignment issue (#138659) * Fix rule details page erroring while displaying SIEM rules * Add unit test to verify fix * Address comment and add generic SIEM rule description for now Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Faisal Kanout --- .../rule_details/components/rule_actions.tsx | 6 +-- .../components/rule_definition.test.tsx | 44 ++++++++++++++++--- .../components/rule_definition.tsx | 39 ++++++++++++---- 3 files changed, 70 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_actions.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_actions.tsx index ddae5bf09317..bff95fe1ce93 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_actions.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_actions.tsx @@ -46,9 +46,9 @@ export function RuleActions({ ruleActions, actionTypeRegistry }: RuleActionsProp } if (isLoadingActionConnectors) return ; return ( - + {actionConnectors.map(({ actionTypeId, name }) => ( - + @@ -60,7 +60,7 @@ export function RuleActions({ ruleActions, actionTypeRegistry }: RuleActionsProp - + ))} ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.test.tsx index 4b065bcd63aa..5166642eaabb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.test.tsx @@ -69,19 +69,28 @@ const mockedRuleTypeIndex = new Map( }) ); +interface SetupProps { + ruleOverwrite?: any; +} + describe('Rule Definition', () => { let wrapper: ReactWrapper; - async function setup() { + async function setup({ ruleOverwrite }: SetupProps = {}) { const actionTypeRegistry = actionTypeRegistryMock.create(); const ruleTypeRegistry = ruleTypeRegistryMock.create(); - const mockedRule = mockRule(); + const mockedRule = mockRule(ruleOverwrite); jest.mock('../../../lib/capabilities', () => ({ hasAllPrivilege: jest.fn(() => true), hasSaveRulesCapability: jest.fn(() => true), hasExecuteActionsCapability: jest.fn(() => true), hasManageApiKeysCapability: jest.fn(() => true), })); - ruleTypeRegistry.has.mockReturnValue(true); + ruleTypeRegistry.has.mockImplementation((id) => { + if (id === 'siem_rule') { + return false; + } + return true; + }); const ruleTypeR: RuleTypeModel = { id: 'my-rule-type', iconClass: 'test', @@ -93,7 +102,12 @@ describe('Rule Definition', () => { ruleParamsExpression: jest.fn(), requiresAppContext: false, }; - ruleTypeRegistry.get.mockReturnValue(ruleTypeR); + ruleTypeRegistry.get.mockImplementation((id) => { + if (id === 'siem_rule') { + throw new Error('error'); + } + return ruleTypeR; + }); actionTypeRegistry.list.mockReturnValue([ { id: '.server-log', iconClass: 'logsApp' }, { id: '.slack', iconClass: 'logoSlack' }, @@ -117,7 +131,10 @@ describe('Rule Definition', () => { }); } - beforeAll(async () => await setup()); + beforeEach(async () => await setup()); + afterEach(() => { + jest.clearAllMocks(); + }); it('renders rule definition ', async () => { expect(wrapper.find('[data-test-subj="ruleSummaryRuleDefinition"]')).toBeTruthy(); @@ -138,6 +155,18 @@ describe('Rule Definition', () => { expect(ruleDescription.find('div.euiText').text()).toEqual('Rule when testing'); }); + it('show SIEM rule type description "', async () => { + await setup({ + ruleOverwrite: { + consumer: 'siem', + ruleTypeId: 'siem_rule', + }, + }); + const ruleDescription = wrapper.find('[data-test-subj="ruleSummaryRuleDescription"]'); + expect(ruleDescription).toBeTruthy(); + expect(ruleDescription.find('div.euiText').text()).toEqual('Security detection rule'); + }); + it('show rule conditions "', async () => { const ruleConditions = wrapper.find('[data-test-subj="ruleSummaryRuleConditions"]'); expect(ruleConditions).toBeTruthy(); @@ -166,7 +195,7 @@ describe('Rule Definition', () => { expect(editButton).toMatchObject({}); }); }); -function mockRule(): Rule { +function mockRule(overwrite = {}): Rule { return { id: '1', name: 'test rule', @@ -175,7 +204,7 @@ function mockRule(): Rule { ruleTypeId: 'test_rule_type', schedule: { interval: '1s' }, actions: [], - params: { name: 'test rule type name' }, + params: { name: 'test rule type name', description: 'siem description' }, createdBy: null, updatedBy: null, apiKeyOwner: null, @@ -218,5 +247,6 @@ function mockRule(): Rule { }, }, }, + ...overwrite, }; } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.tsx index 1823e1209037..c2aa170455ea 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_definition.tsx @@ -15,6 +15,7 @@ import { EuiTitle, EuiLoadingSpinner, } from '@elastic/eui'; +import { AlertConsumers } from '@kbn/rule-data-utils'; import { i18n } from '@kbn/i18n'; import { formatDuration } from '@kbn/alerting-plugin/common'; import { RuleDefinitionProps } from '../../../../types'; @@ -83,6 +84,20 @@ export const RuleDefinition: React.FunctionComponent = ({ : false) ); }, [hideEditButton, canSaveRule, ruleTypeRegistry, rule]); + + const ruleDescription = useMemo(() => { + if (ruleTypeRegistry.has(rule.ruleTypeId)) { + return ruleTypeRegistry.get(rule.ruleTypeId).description; + } + // TODO: Replace this generic description with proper SIEM rule descriptions + if (rule.consumer === AlertConsumers.SIEM) { + return i18n.translate('xpack.triggersActionsUI.ruleDetails.securityDetectionRule', { + defaultMessage: 'Security detection rule', + }); + } + return ''; + }, [rule, ruleTypeRegistry]); + return ( @@ -143,27 +158,33 @@ export const RuleDefinition: React.FunctionComponent = ({ - + {i18n.translate('xpack.triggersActionsUI.ruleDetails.conditionsTitle', { defaultMessage: 'Conditions', })} - - {hasEditButton ? ( - setEditFlyoutVisible(true)}> + + + {hasEditButton ? ( + setEditFlyoutVisible(true)} flush="left"> + {getRuleConditionsWording()} + + ) : ( {getRuleConditionsWording()} - - ) : ( - {getRuleConditionsWording()} - )} + )} + From e7870e30034f0b62859745a2abc2b02da1a11c79 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Thu, 25 Aug 2022 18:11:03 -0400 Subject: [PATCH 20/50] Add synthetics e2e test README file. (#139522) --- x-pack/plugins/synthetics/e2e/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 x-pack/plugins/synthetics/e2e/README.md diff --git a/x-pack/plugins/synthetics/e2e/README.md b/x-pack/plugins/synthetics/e2e/README.md new file mode 100644 index 000000000000..fa20275af977 --- /dev/null +++ b/x-pack/plugins/synthetics/e2e/README.md @@ -0,0 +1,15 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/plugins/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From this directory, `~/x-pack/plugins/synthetics/e2e`, you can now run `node ../../../../scripts/functional_test_runner --config synthetics_run.ts`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. From 7e27b2321e1efee93487a63ec7810e3751ddab13 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:45:39 -0400 Subject: [PATCH 21/50] [api-docs] Daily api_docs build (#139526) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.devdocs.json | 49 ++++++++++++++- api_docs/cases.mdx | 7 ++- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.mdx | 2 +- api_docs/core_application.devdocs.json | 24 ++----- api_docs/core_application.mdx | 2 +- api_docs/core_chrome.mdx | 2 +- api_docs/core_saved_objects.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 40 +++++++++--- api_docs/data.mdx | 4 +- api_docs/data_query.mdx | 4 +- api_docs/data_search.mdx | 4 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.devdocs.json | 63 +++++++++++++------ api_docs/data_views.mdx | 4 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 6 +- api_docs/deprecations_by_team.mdx | 6 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/fleet.devdocs.json | 22 +------ api_docs/fleet.mdx | 4 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- .../kbn_core_injected_metadata_browser.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- .../kbn_core_mount_utils_browser_internal.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_get_repo_files.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_manifest_parser.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_type_summarizer_core.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 12 ++-- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 4 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.devdocs.json | 8 ++- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 360 files changed, 506 insertions(+), 443 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index f8be69588abf..b3dc1d5f93ed 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 47f3ae612e24..af02710d79c7 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 439f4170a658..9a2d71b4045e 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 1a6cc589dbe5..e6b0f372f675 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 1794b674df98..5692d52dbb7e 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 3263a34c995f..90883d94d735 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index ebcc0c37e90a..e27a9fcb2581 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index fc1e7215dfc9..ba12a5428450 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.devdocs.json b/api_docs/cases.devdocs.json index 5f8bc2d01e9f..937717964aca 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -98,7 +98,13 @@ ", plugins: ", "CasesPluginSetup", ") => ", - "CasesUiSetup" + { + "pluginId": "cases", + "scope": "public", + "docId": "kibCasesPluginApi", + "section": "def-public.CasesUiSetup", + "text": "CasesUiSetup" + } ], "path": "x-pack/plugins/cases/public/plugin.ts", "deprecated": false, @@ -442,7 +448,34 @@ "initialIsOpen": false } ], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "cases", + "id": "def-public.CasesUiSetup", + "type": "Interface", + "tags": [], + "label": "CasesUiSetup", + "description": [], + "path": "x-pack/plugins/cases/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "cases", + "id": "def-public.CasesUiSetup.attachmentFramework", + "type": "Object", + "tags": [], + "label": "attachmentFramework", + "description": [], + "signature": [ + "AttachmentFramework" + ], + "path": "x-pack/plugins/cases/public/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], "enums": [], "misc": [ { @@ -689,7 +722,17 @@ "section": "def-common.CommentType", "text": "CommentType" }, - ".alert; alertId: string | string[]; index: string | string[]; rule: { id: string | null; name: string | null; }; owner: string; }" + ".alert; alertId: string | string[]; index: string | string[]; rule: { id: string | null; name: string | null; }; owner: string; } | { type: ", + { + "pluginId": "cases", + "scope": "common", + "docId": "kibCasesPluginApi", + "section": "def-common.CommentType", + "text": "CommentType" + }, + ".persistableState; owner: string; persistableStateAttachmentTypeId: string; persistableStateAttachmentState: { [x: string]: ", + "JsonValue", + "; }; }" ], "path": "x-pack/plugins/cases/public/types.ts", "deprecated": false, diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 4b87b04c5d1d..d86be2b4780f 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; @@ -21,7 +21,7 @@ Contact [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) for qu | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 82 | 0 | 66 | 29 | +| 84 | 0 | 68 | 29 | ## Client @@ -37,6 +37,9 @@ Contact [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) for qu ### Classes +### Interfaces + + ### Consts, variables and types diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index e84bc2c14734..2c497c7b571d 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index f6ccfde39d01..9e88a920c73f 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index f1562959a17b..918ed9418663 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 553e430ae8e5..10a5875ec89e 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 2a55b90dbdb3..5e20fd9ae5ed 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 681aaff8d393..96882c03eb2f 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github description: API docs for the core plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/core_application.devdocs.json b/api_docs/core_application.devdocs.json index 30eaa3462a34..931f19050f91 100644 --- a/api_docs/core_application.devdocs.json +++ b/api_docs/core_application.devdocs.json @@ -1508,6 +1508,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/app/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/plugin.tsx" + }, { "plugin": "security", "path": "x-pack/plugins/security/public/authentication/logout/logout_app.test.ts" @@ -1991,27 +1995,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/index.tsx" + "path": "x-pack/plugins/security_solution/public/types.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/app/home/index.tsx" + "path": "x-pack/plugins/security_solution/public/types.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index fd80f7ca7262..827328bfe630 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github description: API docs for the core.application plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] --- import coreApplicationObj from './core_application.devdocs.json'; diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index fc269df45a2a..bc1127f35ea2 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github description: API docs for the core.chrome plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] --- import coreChromeObj from './core_chrome.devdocs.json'; diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index bc8e9dfaf14f..048c34dc3461 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the core.savedObjects plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] --- import coreSavedObjectsObj from './core_saved_objects.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 9cbd867e5553..5d695c42ee93 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index dbe6ad66e89a..962dfa3447eb 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index da3a2b1ae810..bc42f8c1d37e 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 92bb53862bd1..fe5af7c66d56 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -11853,6 +11853,19 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-server.DataView.matchedIndices", + "type": "Array", + "tags": [], + "label": "matchedIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, { "parentPluginId": "data", "id": "def-server.DataView.Unnamed", @@ -14427,7 +14440,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; filter?: ", "QueryDslQueryContainer", - " | undefined; }) => Promise<", + " | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -14435,7 +14448,7 @@ "section": "def-server.FieldDescriptor", "text": "FieldDescriptor" }, - "[]>" + "[]; indices: string[]; }>" ], "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, @@ -18048,6 +18061,19 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false }, + { + "parentPluginId": "data", + "id": "def-common.DataView.matchedIndices", + "type": "Array", + "tags": [], + "label": "matchedIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, { "parentPluginId": "data", "id": "def-common.DataView.Unnamed", @@ -22478,14 +22504,8 @@ "text": "GetFieldsOptions" }, ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>" + "FieldsForWildcardResponse", + ">" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 3a230a771d7c..24aa8ca3d360 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; @@ -21,7 +21,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3117 | 34 | 2431 | 22 | +| 3119 | 34 | 2433 | 22 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index e940895f7269..671320cdd81a 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3117 | 34 | 2431 | 22 | +| 3119 | 34 | 2433 | 22 | ## Client diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 59766a04d8f0..a1fca320137c 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3117 | 34 | 2431 | 22 | +| 3119 | 34 | 2433 | 22 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 38833081351a..54412d27e057 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index e0d69bf4df01..9e287a5eed66 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 3e93985e623f..0f75cc5398cc 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 8dd55e506010..f56b736e4cf4 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -304,6 +304,19 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataView.matchedIndices", + "type": "Array", + "tags": [], + "label": "matchedIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, { "parentPluginId": "dataViews", "id": "def-public.DataView.Unnamed", @@ -2368,14 +2381,8 @@ "text": "GetFieldsOptions" }, ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>" + "FieldsForWildcardResponse", + ">" ], "path": "src/plugins/data_views/public/data_views/data_views_api_client.ts", "deprecated": false, @@ -6597,6 +6604,19 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false }, + { + "parentPluginId": "dataViews", + "id": "def-server.DataView.matchedIndices", + "type": "Array", + "tags": [], + "label": "matchedIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, { "parentPluginId": "dataViews", "id": "def-server.DataView.Unnamed", @@ -9433,7 +9453,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; filter?: ", "QueryDslQueryContainer", - " | undefined; }) => Promise<", + " | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -9441,7 +9461,7 @@ "section": "def-server.FieldDescriptor", "text": "FieldDescriptor" }, - "[]>" + "[]; indices: string[]; }>" ], "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, @@ -12404,6 +12424,19 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataView.matchedIndices", + "type": "Array", + "tags": [], + "label": "matchedIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, { "parentPluginId": "dataViews", "id": "def-common.DataView.Unnamed", @@ -18096,14 +18129,8 @@ "text": "GetFieldsOptions" }, ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>" + "FieldsForWildcardResponse", + ">" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 6898ade1db8a..fd4096a5c431 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; @@ -21,7 +21,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 960 | 0 | 203 | 0 | +| 963 | 0 | 206 | 1 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 2523a065ec0a..4355e0004a66 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 34fb5ebddb39..51ca115e6d42 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 8d4a55330ef9..831a7df0f89b 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -566,8 +566,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | | | [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [create_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts#:~:text=authc), [delete_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts#:~:text=authc), [finalize_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts#:~:text=authc), [open_close_signals_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts#:~:text=authc), [preview_rules_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts#:~:text=authc), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts#:~:text=authc) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave) | 8.8.0 | -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | 8.8.0 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave), [plugin.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/plugin.tsx#:~:text=onAppLeave) | 8.8.0 | +| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/types.ts#:~:text=AppLeaveHandler), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/types.ts#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler) | 8.8.0 | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 04569f6620d1..b44054f8a179 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -164,8 +164,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | --------|-------|-----------|-----------| | securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | | securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | -| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave) | 8.8.0 | -| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | 8.8.0 | +| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave), [plugin.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/plugin.tsx#:~:text=onAppLeave) | 8.8.0 | +| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/types.ts#:~:text=AppLeaveHandler), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/types.ts#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=AppLeaveHandler) | 8.8.0 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 8f53f14df881..0686a6d693ee 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 416129b0f7c8..53195eade230 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index d9416f82d727..6df6e4725523 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 2d044eaed2df..b218b0361579 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 303ee7d4814e..733be8ab7517 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index d46398597a3b..ab4974d750ca 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 537eac8ae625..2740973114e7 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 21fde4ca00cd..7334ecf600d4 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index f2e397b4837e..8a0295dd05ba 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 949fdc31e256..99efa5192329 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 6924d1fdc11f..f3f5168b2801 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index d4ac656d865e..5e426c8ecd2b 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 6a76daa94e78..3bc8ce0a4f11 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index e394f6f4646d..e37fd456bb96 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index b2b2079d20ac..08053b4efe15 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 35bb18195921..c516ce28fbcd 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 09d6b508d678..10d15480a3f9 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index d37aa5391a74..9a16085875aa 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index a5ff25b3f3de..db884db7e94c 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 461a4eeb233e..9dc941d59c51 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 5f743d7841d1..5f345b23fba5 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 19135263bf6b..90bc05882119 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 493a1b33b839..aa45a96fcbb3 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 459c90120808..800e8c33bb1a 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index be1c451bab82..0a4dbbc79630 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 3279f77dbdd1..6a40753c2450 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 5ba2604a3d22..bd88bfa214dd 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index c40715a2d681..4079dbdb47d7 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 3f9ade602401..518b52348920 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -613,16 +613,6 @@ "path": "x-pack/plugins/fleet/common/types/models/package_policy.ts", "deprecated": false }, - { - "parentPluginId": "fleet", - "id": "def-public.NewPackagePolicy.output_id", - "type": "string", - "tags": [], - "label": "output_id", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/package_policy.ts", - "deprecated": false - }, { "parentPluginId": "fleet", "id": "def-public.NewPackagePolicy.package", @@ -1381,7 +1371,7 @@ "The updated Integration Policy to be merged back and included in the API call" ], "signature": [ - "{ id?: string | number | undefined; name?: string | undefined; description?: string | undefined; namespace?: string | undefined; enabled?: boolean | undefined; is_managed?: boolean | undefined; policy_id?: string | undefined; output_id?: string | undefined; package?: ", + "{ id?: string | number | undefined; name?: string | undefined; description?: string | undefined; namespace?: string | undefined; enabled?: boolean | undefined; is_managed?: boolean | undefined; policy_id?: string | undefined; package?: ", { "pluginId": "fleet", "scope": "common", @@ -10584,16 +10574,6 @@ "path": "x-pack/plugins/fleet/common/types/models/package_policy.ts", "deprecated": false }, - { - "parentPluginId": "fleet", - "id": "def-common.NewPackagePolicy.output_id", - "type": "string", - "tags": [], - "label": "output_id", - "description": [], - "path": "x-pack/plugins/fleet/common/types/models/package_policy.ts", - "deprecated": false - }, { "parentPluginId": "fleet", "id": "def-common.NewPackagePolicy.package", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index b8d273186a63..de705db1b3cb 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Fleet](https://github.com/orgs/elastic/teams/fleet) for questions regar | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 967 | 3 | 872 | 10 | +| 965 | 3 | 870 | 10 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 21759cd98913..9f643c1cc2ad 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index b1b72919388c..138372c6c83f 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 689a436547bc..279ffb1047ba 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index e7adf60721b6..685392da3350 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index b33b8f461e28..71dd514f27ce 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 539fe072161b..56ccd5f93648 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index deaa0e1cec9d..0372b7eba4fe 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 0f6b9bcb90b5..1fa1b355c27c 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 21ff36ae4a27..739ccbb931d3 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index e1da3419bb0c..d0c78d9e3025 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 3ae8606b2d74..c3b520d62919 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index eb2b459f0bcd..67c588334226 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 142b73c9e4ef..8391ddf8b4c6 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index c66f0c591143..fe3774e3ad85 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 4e51e798e043..d33bf0e85a3b 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 96b8ede73e0f..849a54e3212d 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 26bd13037ceb..2de9a296def7 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index b57651f7f601..bd1e4d88418e 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index c50a83c885a4..bbedcdb0aa64 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 13fa1f4261db..630e38918831 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 6e55fa6311b5..c9639dc06d4b 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 13fcb34711b7..d04a5fe90760 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 0f29b4c02494..256391a4bb91 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 9a459e5756dc..c454a3e1a9d1 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 579087a4c8c1..cfa392b9ee0a 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 0c525e974e95..cf9439c98c70 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index beb5c51b19b8..5bd07da9c042 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 0cc4dcec069f..e9c7d5dd4e53 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index ff40e7357f4e..6af75e0bd8fa 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 4b32220dffb1..f7ecc06585d4 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 361d959773c6..714006813a48 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index d1a520446465..1262d844cd2d 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index b58e8bf78607..d9929f4d3592 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 6e19dcc8e95e..17b0120e798c 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 32679e51b89e..11763a1b66c4 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 301adb5accf2..4c3ad6e058a2 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index d730776c69c3..7ce886865cfa 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 1a4f548c2381..95d24a9aa3a1 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 3048af4df795..609cf27b980b 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 81d39c857bc7..7b2aeddac42e 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index b65234189ffb..3ca0bf81fcf1 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 25ac37c0c582..1fe79a5c36a0 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 8584a38cc4b9..27c4a1f46b35 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 99d14e245ce9..3995d86b057c 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 9734a0272a7f..8d61a8bde5ec 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 0ab2c193b1fc..13dee31647a8 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 1d5e75c98577..cab1123abfa3 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 165ec174a14c..b8deaae0038b 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 27916555e84c..ff2ce73d80dd 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index c5ccf915f056..065e37a2ce14 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 6e69751c8fb4..95da1b91502e 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 33f7f683adc6..5ab1993546f9 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 4d860f4cf93a..6c7c49f5b9f9 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 76f6287fee80..e7e5f7a49156 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 196bc63a91e4..3c6515307e66 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 93789d07a50b..f5525d48b522 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index d59c95db6ae4..14ad843a24fc 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 3194ab710d17..843c2a26461a 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index dd7ee84d75d1..569074f6d5e2 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 7059dd0d4ee2..7efe8b6d5c88 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 4e28ceaa675e..1e545969194b 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 1e4637bd487a..ec4bac7e3c93 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 3816de53c405..5f57a08cbb32 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index d99fb7f0a6fe..176bf73ab022 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 396e9eef6afc..ffaeb7fee7df 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 4a9b0dd7275a..712b795f547f 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index f86ee3da147c..690377d74f88 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 451da4763031..7f4fd0e61fd5 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 6a7b3b85f86e..a81814631b9a 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 69b401370160..e5b9ea2a5701 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 26236f96310f..96b1eb8a6d94 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 1fff00ffd660..ac6bde988c37 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 6f7c5df0252e..98454c5540df 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index bf330fbea65f..bcad26892304 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 627bbbfd92fd..e7e7efafeabe 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index b186519537a3..307ee6c12236 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 90b38eebfa2c..a9c06be70272 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 58720d141e5e..0e89ca32661b 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index eecb82626a0a..97a4004be412 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 668c33d8a682..adc13fbbe676 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 4a70ed46b2de..993ad090d3b7 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] --- import kbnCoreInjectedMetadataBrowserObj from './kbn_core_injected_metadata_browser.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 628cdbec0426..3d7eff7cd5f5 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 94f147e72ef2..e62f851a807a 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 3744ac452b36..141f7dc2833a 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 25ce64f9ff32..4d20da7dda16 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index b80c7d289950..6c1a8a5ffe86 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index ec792bfd4fbe..6726534506b0 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index a4ef238a675f..46f34b5465ac 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index fb6397fba9e8..9294214f4255 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 746f70eb5183..61ef5a7a51a2 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 8620a2641beb..7666183acff5 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 1bab9701441c..0768d8648c7b 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 6176f6a16916..84156ef63abb 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser_internal.mdx b/api_docs/kbn_core_mount_utils_browser_internal.mdx index 85c3c5de1ee4..526a23017dbf 100644 --- a/api_docs/kbn_core_mount_utils_browser_internal.mdx +++ b/api_docs/kbn_core_mount_utils_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser-internal title: "@kbn/core-mount-utils-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser-internal'] --- import kbnCoreMountUtilsBrowserInternalObj from './kbn_core_mount_utils_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 991e39606147..3c29698b00cd 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 25d39317e710..7573ec8f52e0 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 41f6f06cd116..c65bcb22ff01 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index b3959248e4aa..c39e23766cb7 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 8f9e314d05c1..ce6818e0ad25 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index e6204ca84ace..3388a7f1a3b3 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index a06620f5fdce..37af6696eb09 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 5d0d65562130..b73da1ca586d 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 2dec4dc5a5a6..09490569fb02 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index ac44620d1c14..7b752c736d66 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 24fa387046f4..b4d36cd0b7e5 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 599bf504b0b5..3a3c46b6eb6b 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 6868276b44cd..42c97103ee4f 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 3707d6348f8b..2c20dc024301 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 2b8f88f511a1..25a26f194c8a 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index f7e6490cf1a7..609a8cf777dd 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 15eb1a7df1d4..35c1a7f03487 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 6611824b8bbb..9b8b12f8e9a4 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 2198c485b6d8..8ef70538abe0 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index f2a7b87bb6a9..9db921feffe7 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 42d9491fcd3a..dbf94cccdfb2 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index fba7e48326cb..291ac1065813 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 7723464eff91..bd22230b40c0 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 0ce5777cc40f..11b728694818 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index fce599ab9699..43125675ac1d 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index f489e5ff51c8..3f2734d440bd 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index f39b941a83cb..4b81d752504b 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 29ca43d1a178..30585ecd5b00 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index dd62cdf5a686..7302a32c6e00 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 1b178047b150..53f556e76369 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 8299fe8caedd..6fdcdb89afe7 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 7f4a9abbbf4a..3870d746da1d 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index fc02121271dd..1fbdb4209cb6 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index b7ee4a2263f8..05a150f541c2 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 96c35150e548..efee8f7aebd9 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index ae73ffe8bc93..f11b0a160cfe 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 10ea45231e1b..7eb48c1afb22 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index b14a4a980f7d..6368ac692263 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index cde479f18f3d..07e6ee6e285e 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 29f2d2b98744..2c6a0d026ed9 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index d3610261dcf5..75725e906b70 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index df79d7a318c9..49d5de785f8e 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 825b5b462f42..b5e15619d10d 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 58d7cf091846..d6d7c6c7de24 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index d5a2804105ba..bddff4d438a1 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index ef7a3d78994e..74c1f3f4e219 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 634febc75767..445ac5f0d6ea 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_get_repo_files.mdx b/api_docs/kbn_get_repo_files.mdx index cfb3e0e08301..059d83739c0f 100644 --- a/api_docs/kbn_get_repo_files.mdx +++ b/api_docs/kbn_get_repo_files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-get-repo-files title: "@kbn/get-repo-files" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/get-repo-files plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index dd563a6548b2..9d18ba0d137e 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index c0740082b80e..30fda71cf58d 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index cceee429a87c..6b03ca9665cf 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 433b3679a19c..e35558b98262 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 46dff09c5859..637b697b8ac8 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 027823b0bc87..65f7c975af65 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index af5bb6448b1b..c4ebf39eee91 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index b9c9ffd22ab7..5a3cca57b2fb 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 4567abd7f169..9216157b132a 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_parser.mdx b/api_docs/kbn_kibana_manifest_parser.mdx index 069493d85b12..5904cde4a77b 100644 --- a/api_docs/kbn_kibana_manifest_parser.mdx +++ b/api_docs/kbn_kibana_manifest_parser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-parser title: "@kbn/kibana-manifest-parser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-parser plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-parser'] --- import kbnKibanaManifestParserObj from './kbn_kibana_manifest_parser.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 6fe5ae34bb51..6ce28e15f087 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 95e10f042ddb..1440037e51c2 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index b0668b44936d..b99d7f88ad8c 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index c8a5cb18efb3..a58a919e6fac 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index b85ec952040e..fdb46bad7b33 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index c4c952ff999a..ed5aa7a76d1b 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 1965a997aaf8..6d2341759dc7 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index e92d7fb5cf2a..145308eb4bde 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 86a2d437f519..2efff66b003f 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 69b23f80f111..91940ce23764 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index ed0734e3eb62..894b19e4a99e 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index d575f66b3cfb..90fadf3324a5 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index e95babe2350e..997b69d91c7a 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 907269ac1944..24a5cae829a0 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index ecd0cf2f2058..7c3ca220ed7d 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 0ee6199ed4e4..ede30355959e 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index e65840adebc5..15e01d2f94b1 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 02430d8571d9..5b112ad06ee4 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index d172ebb469ec..f2b9ca25decd 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index efea1bb051e8..c0568d16829b 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index f3023292149d..3659735300ee 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 8a8c19556950..f3c8a7d31428 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 9a441e05898f..97d4045e1136 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 12f3518e7c7e..a0b22250b033 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index cbb6203fec0c..a658e918fc4c 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index ece6d3b9543a..ddd7e5b5f5a0 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 42e285f0b779..afb4d4175116 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index d147cdfa750f..ec7bc813f7f1 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 87fbfd7b1341..d9c0d30a1854 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 6288580920a9..ad46d463e271 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index ca078e4f0bc5..c2ffa9419bd0 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index d3be0bba4ebe..32b4802cf9ae 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 4315909e9338..3be4e97693af 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index e288f2438d3f..442f778af704 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 0f9f52584360..680789fba38f 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index d62b7d8a4aed..df516da6266b 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 1279be477444..d424cd5f18cc 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 52cae038c1e4..c764e58c411a 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index e195f34ddbfb..f5cf1445b9e1 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 247087983788..ef8ef073ea8b 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 0bb545d64f0b..a3a127dc91b4 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 36a9e8d6aa65..17aff2098b06 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 700490347e74..604765484a78 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 2e47e3f23dda..d3bd6568178d 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 9115be422ea2..ea816187d4b6 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index dd280251393e..c2a4a620c05e 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 30502004d010..275a5132bb30 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 803dc7906dcc..52956ab771e3 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index d91266e247f9..bb391ffcd1e0 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 45daf159d190..53446f4877a3 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 385ef459b879..cc69e07a0c79 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 8d5f9d13869b..aafc933ecba0 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 5796fe94200d..90126c247ebb 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 852a3177ec89..b99f92a8bce5 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 6793ae06564f..7ef6359cee36 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 6fd7ccd3ccb9..3bf0905227be 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-package-json plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] --- import kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index b8e1b3f0f457..aa6f2fee5e43 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 2936901ae456..8d34a9c3da8f 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 70e12866b86f..cc283e52c37b 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 310de0af20e7..a304f8cde35b 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 7c2f3bc09722..b75c680d199d 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index bc6337f893c2..1eb6f4ee924c 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 56649babd28a..7935863bde91 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index da35bb05f58e..80d8867c0e08 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] --- import kbnTypeSummarizerObj from './kbn_type_summarizer.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index bb8aa45b65d1..5725bd60ccc2 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer-core plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] --- import kbnTypeSummarizerCoreObj from './kbn_type_summarizer_core.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index c067cc15b9ee..acc3841da6ca 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 9e6476999208..4142f0beac9e 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index f04a901fe2e4..26ef04ca995c 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 55e2c616a8e8..2e4610d5feef 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 697e016ae22c..04850b9d8a9e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 68f4b36b52d5..2c77bc33f6c3 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 8e784f1748f2..0e6b920ea9d2 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 818f5c0c3d5e..60ea7190ed08 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 45dbf2c5047e..8cd1a4faf9b2 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 3819b8e03202..c48cc9b847b9 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index ffb1985651e9..d60dcb649ad1 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 38ea1bce48cc..c12e40158a53 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 7d7c25360023..154777863ae8 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 629266010d63..b7cd8c333329 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 822b0e9e3407..a38ecf961b5d 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 57866b533a84..91ce79dc98f9 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 7a9b14a24b53..b15c941773c8 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 22034db9582f..f6c83e308a10 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 693caaa4a340..3290f619b425 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index d0dd80428511..abcac9c4aa56 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 1127a83a494f..23fbb345e2e2 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 2c8f3acc14f8..e9aabd408f75 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 6c5136d7f8fa..65954294d646 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 1939f028e3fb..d0f9acae345c 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 03c2c042e400..d177c3008e13 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index b74d8b679737..91c62fe761b2 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index a7a5d7511670..78b1a74aff53 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 29523 | 180 | 19900 | 922 | +| 29528 | 180 | 19905 | 923 | ## Plugin Directory @@ -35,7 +35,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 9 | 0 | 9 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 80 | 1 | 71 | 2 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | -| | [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 82 | 0 | 66 | 29 | +| | [ResponseOps](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 84 | 0 | 68 | 29 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 261 | 2 | 246 | 9 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 29 | 0 | 24 | 0 | | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 18 | 0 | 2 | 3 | @@ -46,11 +46,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 102 | 0 | 83 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 146 | 0 | 141 | 12 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 52 | 0 | 51 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3117 | 34 | 2431 | 22 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3119 | 34 | 2433 | 22 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 15 | 0 | 7 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Reusable data view field editor across Kibana | 49 | 0 | 29 | 3 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data view management app | 2 | 0 | 2 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 960 | 0 | 203 | 0 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 963 | 0 | 206 | 1 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 28 | 3 | 24 | 1 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 10 | 0 | 8 | 2 | | | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 93 | 0 | 76 | 4 | @@ -80,7 +80,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Index pattern fields and ambiguous values formatters | 288 | 5 | 249 | 3 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | | | [@elastic/kibana-app-services](https://github.com/orgs/elastic/teams/team:AppServicesUx) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 243 | 0 | 6 | 2 | -| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 967 | 3 | 872 | 10 | +| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 965 | 3 | 870 | 10 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | globalSearchProviders | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 8f5e4f6079ad..1d5ccd695246 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 47166aee1522..1251f477dfe6 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 806cba91608c..8386f38b55b7 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index f4f600999215..d462ed4ad2f2 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index fa3710bf717a..2555504390b7 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index b581d8eeeeea..cbbab3ef67bc 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 16c89d0cf9bc..48ed84d34bf7 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index f1d02b45f72f..7304a111f9ec 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 9dfae6bdef8b..eb133da2af98 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index c8898c6c9b9e..0ebcacfa6795 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index be960eb7f89e..a5f3017978da 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index edf4738ae42a..635ffd617cd7 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index b30e9d341fc7..66b1cb7e8360 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index f592b5699c35..be910312f73c 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 9f2200d922ae..fa27f05e2bea 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -62,7 +62,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly disableIsolationUIPendingStatuses: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly pendingActionResponsesWithAck: boolean; readonly policyListEnabled: boolean; readonly policyResponseInFleetEnabled: boolean; readonly threatIntelligenceEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly responseActionsConsoleEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly disableIsolationUIPendingStatuses: boolean; readonly riskyHostsEnabled: boolean; readonly riskyUsersEnabled: boolean; readonly pendingActionResponsesWithAck: boolean; readonly policyListEnabled: boolean; readonly policyResponseInFleetEnabled: boolean; readonly threatIntelligenceEnabled: boolean; readonly entityAnalyticsDashboardEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly responseActionsConsoleEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false @@ -1044,7 +1044,7 @@ "label": "ConfigType", "description": [], "signature": [ - "Readonly<{} & { signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; prebuiltRulesFromFileSystem: boolean; prebuiltRulesFromSavedObjects: boolean; }> & { experimentalFeatures: Readonly<{ tGridEnabled: boolean; tGridEventRenderedViewEnabled: boolean; excludePoliciesInFilterEnabled: boolean; kubernetesEnabled: boolean; disableIsolationUIPendingStatuses: boolean; riskyHostsEnabled: boolean; riskyUsersEnabled: boolean; pendingActionResponsesWithAck: boolean; policyListEnabled: boolean; policyResponseInFleetEnabled: boolean; threatIntelligenceEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; insightsRelatedAlertsByProcessAncestry: boolean; extendedRuleExecutionLoggingEnabled: boolean; }>; }" + "Readonly<{} & { signalsIndex: string; maxRuleImportExportSize: number; maxRuleImportPayloadBytes: number; maxTimelineImportExportSize: number; maxTimelineImportPayloadBytes: number; alertMergeStrategy: \"allFields\" | \"missingFields\" | \"noFields\"; alertIgnoreFields: string[]; enableExperimental: string[]; packagerTaskInterval: string; prebuiltRulesFromFileSystem: boolean; prebuiltRulesFromSavedObjects: boolean; }> & { experimentalFeatures: Readonly<{ tGridEnabled: boolean; tGridEventRenderedViewEnabled: boolean; excludePoliciesInFilterEnabled: boolean; kubernetesEnabled: boolean; disableIsolationUIPendingStatuses: boolean; riskyHostsEnabled: boolean; riskyUsersEnabled: boolean; pendingActionResponsesWithAck: boolean; policyListEnabled: boolean; policyResponseInFleetEnabled: boolean; threatIntelligenceEnabled: boolean; entityAnalyticsDashboardEnabled: boolean; previewTelemetryUrlEnabled: boolean; responseActionsConsoleEnabled: boolean; insightsRelatedAlertsByProcessAncestry: boolean; extendedRuleExecutionLoggingEnabled: boolean; }>; }" ], "path": "x-pack/plugins/security_solution/server/config.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 20d2810e73db..5a3a50027845 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index f1b0b4fab2df..6cd7ccfa26c4 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 0431ccbca521..68a8d14b3913 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 11769ea4d6d3..b17807dd2861 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 3a9bd72f22cf..3d8727ffef84 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 1d1931e25f63..9810ea11c105 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index c01979fcd638..1d18374d7443 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index a0e19a07f272..a7df4dc50df1 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 7406adb26dd5..59bde8939866 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index e283523d813b..2b0db15b1b0f 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index f38ec6b63b99..bcc0fc1c2e13 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 63d5eba82166..2680aa2a92e2 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index 992276211171..b1f83b8dcea4 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -768,7 +768,7 @@ "label": "getManageTimelineById", "description": [], "signature": [ - "() => Reselect.OutputParametricSelector ((state: {}, params_0: string) => { dataViewId: string | null; documentType: string; defaultColumns: (Pick<", "EuiDataGridColumn", ", \"id\" | \"display\" | \"displayAsText\" | \"initialWidth\"> & Pick<", "EuiDataGridColumn", @@ -792,7 +792,9 @@ "section": "def-public.FilterManager", "text": "FilterManager" }, - " | undefined; footerText: React.ReactNode; loadingText: React.ReactNode; queryFields: string[]; selectAll: boolean; title: string; }, (res: ", + " | undefined; footerText: React.ReactNode; loadingText: React.ReactNode; queryFields: string[]; selectAll: boolean; title: string; }) & ", + "OutputSelectorFields", + "<(args_0: ", { "pluginId": "timelines", "scope": "public", @@ -824,7 +826,7 @@ "section": "def-public.FilterManager", "text": "FilterManager" }, - " | undefined; footerText: React.ReactNode; loadingText: React.ReactNode; queryFields: string[]; selectAll: boolean; title: string; }>" + " | undefined; footerText: React.ReactNode; loadingText: React.ReactNode; queryFields: string[]; selectAll: boolean; title: string; } & { clearCache: () => void; }> & { clearCache: () => void; }" ], "path": "x-pack/plugins/timelines/public/store/t_grid/selectors.ts", "deprecated": false, diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 910a0beb3fcd..b7e477ddbff4 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 078bbf107310..1955a1aeb40e 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 861fd29fb198..49e8350b8a7d 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 84a2623f5a0c..abec400ea3e9 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index d0aaccdc6fa2..5babd1ef9b8c 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 4ef72a4d459d..6dae65ba1b9b 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index b655a2f3cb6f..ab1663a92bb7 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index dec2a17eac39..e1aa55f00e67 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 56fd8bd91c9d..be6d5bf88b51 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index df043bf15019..cc79236e9501 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 0f08c0ee2306..121eb4f1bd9c 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index f84ff31d6fba..a1f83968f2db 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 1138f795098d..6c7c46e4aaac 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 8d99493a58c0..752dddd2bd01 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 61693a0b9cb4..6df3539b3335 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 8cd6c3b678c0..b6de14724a90 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index ceda83d61a25..a0d7fc8f29bf 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d56f0d281da3..894e312ee0ac 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index ce05ba4845f5..fa0386973a68 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index c71aeb39c3cb..96766a96ff7b 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 469a6cca57ef..170e2b7595ed 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 10ae90e72dda..51ea10861850 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2022-08-25 +date: 2022-08-26 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 4f65c099bcdbfc286a418696b85352fa2f8162c5 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 26 Aug 2022 08:49:37 +0100 Subject: [PATCH 22/50] [ML] Quickly create ML jobs from lens visualizations (#136421) * [ML] Quickly create ML jobs from lens visualizations * adding additional settings * adding model plot for single metric jobs * adding results link * form logic improvements * translations * translations * translations * changing view results link generation * handling opening already open jobs * fixing count detector * removing unused file * improving error displaying * updating tests * removing unused test code * deleting jobs after test * code clean up * fixing issue with layers sharing resources * removing fragment * moving code about * minor changes based on review * translations * updating results link for non-running job * renaming variables * refactoring job creation code into class * using context refactor * renaming things * catching isCompatible errors * fixing behaviour in canvas * removing comment * small refactor moving code * handling error * fixing typo * further refactoring based on review * adding vis title to description * white layer panels * translations --- x-pack/plugins/ml/common/constants/new_job.ts | 2 + x-pack/plugins/ml/common/types/errors.ts | 20 - x-pack/plugins/ml/common/util/job_utils.ts | 4 + .../convert_lens_to_job_action.tsx | 34 -- .../jobs/new_job/job_from_lens/create_job.ts | 413 --------------- .../jobs/new_job/job_from_lens/index.ts | 12 +- .../new_job/job_from_lens/quick_create_job.ts | 333 +++++++++++++ .../new_job/job_from_lens/route_resolver.ts | 21 +- .../jobs/new_job/job_from_lens/utils.ts | 44 +- .../job_from_lens/visualization_extractor.ts | 224 +++++++++ .../preconfigured_job_redirect.ts | 2 + .../services/ml_api_service/index.ts | 14 +- .../common/resolve_job_selection.tsx | 14 +- .../ml/public/embeddables/lens/context.ts | 23 + .../flyout.tsx | 51 +- .../flyout_body.tsx | 135 ----- .../layer/compatible_layer.tsx | 471 ++++++++++++++++++ .../layer/incompatible_layer.tsx | 43 ++ .../layer/index.ts | 7 + .../layer/layer.tsx | 59 +++ .../style.scss | 3 - .../public/embeddables/lens/show_flyout.tsx | 37 +- .../ui_actions/open_lens_vis_in_ml_action.tsx | 10 +- .../translations/translations/fr-FR.json | 2 - .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - .../apps/ml/anomaly_detection/index.ts | 1 + .../apps/ml/anomaly_detection/lens_to_ml.ts | 146 ++---- .../lens_to_ml_with_wizard.ts | 222 +++++++++ x-pack/test/functional/services/ml/index.ts | 2 +- .../services/ml/lens_visualizations.ts | 45 +- 31 files changed, 1595 insertions(+), 803 deletions(-) delete mode 100644 x-pack/plugins/ml/common/types/errors.ts delete mode 100644 x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/convert_lens_to_job_action.tsx delete mode 100644 x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/create_job.ts create mode 100644 x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/quick_create_job.ts create mode 100644 x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/visualization_extractor.ts create mode 100644 x-pack/plugins/ml/public/embeddables/lens/context.ts delete mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout_body.tsx create mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/compatible_layer.tsx create mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/incompatible_layer.tsx create mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/index.ts create mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/layer.tsx delete mode 100644 x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/style.scss create mode 100644 x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml_with_wizard.ts diff --git a/x-pack/plugins/ml/common/constants/new_job.ts b/x-pack/plugins/ml/common/constants/new_job.ts index 800b81d47372..c02939479846 100644 --- a/x-pack/plugins/ml/common/constants/new_job.ts +++ b/x-pack/plugins/ml/common/constants/new_job.ts @@ -21,6 +21,8 @@ export enum CREATED_BY_LABEL { CATEGORIZATION = 'categorization-wizard', RARE = 'rare-wizard', APM_TRANSACTION = 'ml-module-apm-transaction', + SINGLE_METRIC_FROM_LENS = 'single-metric-wizard-from-lens', + MULTI_METRIC_FROM_LENS = 'multi-metric-wizard-from-lens', } export const DEFAULT_MODEL_MEMORY_LIMIT = '10MB'; diff --git a/x-pack/plugins/ml/common/types/errors.ts b/x-pack/plugins/ml/common/types/errors.ts deleted file mode 100644 index 415c9d9f4c74..000000000000 --- a/x-pack/plugins/ml/common/types/errors.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export interface ErrorResponse { - body: { - statusCode: number; - error: string; - message: string; - attributes?: any; - }; - name: string; -} - -export function isErrorResponse(arg: any): arg is ErrorResponse { - return arg?.body?.error !== undefined && arg?.body?.message !== undefined; -} diff --git a/x-pack/plugins/ml/common/util/job_utils.ts b/x-pack/plugins/ml/common/util/job_utils.ts index d7faf732a7c8..fc600afaa233 100644 --- a/x-pack/plugins/ml/common/util/job_utils.ts +++ b/x-pack/plugins/ml/common/util/job_utils.ts @@ -410,6 +410,10 @@ export function prefixDatafeedId(datafeedId: string, prefix: string): string { : `datafeed-${prefix}${datafeedId}`; } +export function createDatafeedId(jobId: string) { + return `datafeed-${jobId}`; +} + // Returns a name which is safe to use in elasticsearch aggregations for the supplied // field name. Aggregation names must be alpha-numeric and can only contain '_' and '-' characters, // so if the supplied field names contains disallowed characters, the provided index diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/convert_lens_to_job_action.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/convert_lens_to_job_action.tsx deleted file mode 100644 index ab00fa7e2d47..000000000000 --- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/convert_lens_to_job_action.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SharePluginStart } from '@kbn/share-plugin/public'; -import type { Embeddable } from '@kbn/lens-plugin/public'; -import { getJobsItemsFromEmbeddable } from './utils'; -import { ML_PAGES, ML_APP_LOCATOR } from '../../../../../common/constants/locator'; - -export async function convertLensToADJob( - embeddable: Embeddable, - share: SharePluginStart, - layerIndex?: number -) { - const { query, filters, to, from, vis } = getJobsItemsFromEmbeddable(embeddable); - const locator = share.url.locators.get(ML_APP_LOCATOR); - - const url = await locator?.getUrl({ - page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_FROM_LENS, - pageState: { - vis: vis as any, - from, - to, - query, - filters, - layerIndex, - }, - }); - - window.open(url, '_blank'); -} diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/create_job.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/create_job.ts deleted file mode 100644 index 35654fbc2878..000000000000 --- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/create_job.ts +++ /dev/null @@ -1,413 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { mergeWith } from 'lodash'; -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { IUiSettingsClient, SavedObjectReference } from '@kbn/core/public'; -import type { DataViewsContract } from '@kbn/data-views-plugin/public'; - -import { Filter, Query, DataViewBase } from '@kbn/es-query'; - -import type { - Embeddable, - LensPublicStart, - LensSavedObjectAttributes, - FieldBasedIndexPatternColumn, - XYDataLayerConfig, - IndexPatternPersistedState, - IndexPatternLayer, - XYLayerConfig, -} from '@kbn/lens-plugin/public'; -import { layerTypes } from '@kbn/lens-plugin/public'; -import type { TimefilterContract } from '@kbn/data-plugin/public'; - -import { i18n } from '@kbn/i18n'; - -import type { JobCreatorType } from '../common/job_creator'; -import { createEmptyJob, createEmptyDatafeed } from '../common/job_creator/util/default_configs'; -import { stashJobForCloning } from '../common/job_creator/util/general'; -import { CREATED_BY_LABEL, DEFAULT_BUCKET_SPAN } from '../../../../../common/constants/new_job'; -import { ErrorType } from '../../../../../common/util/errors'; -import { createQueries } from '../utils/new_job_utils'; -import { - getVisTypeFactory, - isCompatibleLayer, - hasIncompatibleProperties, - hasSourceField, - isTermsField, - isCompatibleSplitFieldType, - getMlFunction, - getJobsItemsFromEmbeddable, -} from './utils'; - -type VisualizationType = Awaited>[number]; - -export interface LayerResult { - id: string; - layerType: typeof layerTypes[keyof typeof layerTypes]; - label: string; - icon: VisualizationType['icon']; - isCompatible: boolean; - jobWizardType: CREATED_BY_LABEL | null; - error?: ErrorType; -} - -export async function canCreateAndStashADJob( - vis: LensSavedObjectAttributes, - startString: string, - endString: string, - query: Query, - filters: Filter[], - dataViewClient: DataViewsContract, - kibanaConfig: IUiSettingsClient, - timeFilter: TimefilterContract, - layerIndex: number | undefined -) { - try { - const { jobConfig, datafeedConfig, createdBy } = await createADJobFromLensSavedObject( - vis, - query, - filters, - dataViewClient, - kibanaConfig, - layerIndex - ); - - let start: number | undefined; - let end: number | undefined; - let includeTimeRange = true; - - try { - // attempt to parse the start and end dates. - // if start and end values cannot be determined - // instruct the job cloning code to auto-select the - // full time range for the index. - const { min, max } = timeFilter.calculateBounds({ to: endString, from: startString }); - start = min?.valueOf(); - end = max?.valueOf(); - - if (start === undefined || end === undefined || isNaN(start) || isNaN(end)) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.timeRange', { - defaultMessage: 'Incompatible time range', - }) - ); - } - } catch (error) { - // eslint-disable-next-line no-console - console.error(error); - includeTimeRange = false; - start = undefined; - end = undefined; - } - - // add job config and start and end dates to the - // job cloning stash, so they can be used - // by the new job wizards - stashJobForCloning( - { - jobConfig, - datafeedConfig, - createdBy, - start, - end, - } as JobCreatorType, - true, - includeTimeRange, - !includeTimeRange - ); - } catch (error) { - // eslint-disable-next-line no-console - console.error(error); - } -} - -export async function getResultLayersFromEmbeddable( - embeddable: Embeddable, - dataViewClient: DataViewsContract, - lens: LensPublicStart -): Promise { - const { vis } = getJobsItemsFromEmbeddable(embeddable); - return getLayers(vis, dataViewClient, lens); -} - -async function getLayers( - vis: LensSavedObjectAttributes, - dataViewClient: DataViewsContract, - lens: LensPublicStart -): Promise { - const visualization = vis.state.visualization as { layers: XYLayerConfig[] }; - const getVisType = await getVisTypeFactory(lens); - - const layers: LayerResult[] = await Promise.all( - visualization.layers - .filter(({ layerType }) => layerType === layerTypes.DATA) // remove non chart layers - .map(async (layer) => { - const { icon, label } = getVisType(layer); - try { - const { fields, splitField } = await extractFields(layer, vis, dataViewClient); - const detectors = createDetectors(fields, splitField); - const createdBy = - splitField || detectors.length > 1 - ? CREATED_BY_LABEL.MULTI_METRIC - : CREATED_BY_LABEL.SINGLE_METRIC; - - return { - id: layer.layerId, - layerType: layer.layerType, - label, - icon, - jobWizardType: createdBy, - isCompatible: true, - }; - } catch (error) { - return { - id: layer.layerId, - layerType: layer.layerType, - label, - icon, - jobWizardType: null, - isCompatible: false, - error, - }; - } - }) - ); - - return layers; -} - -async function createADJobFromLensSavedObject( - vis: LensSavedObjectAttributes, - query: Query, - filters: Filter[], - dataViewClient: DataViewsContract, - kibanaConfig: IUiSettingsClient, - layerIndex?: number -) { - const visualization = vis.state.visualization as { layers: XYDataLayerConfig[] }; - - const compatibleLayers = visualization.layers.filter(isCompatibleLayer); - - const selectedLayer = - layerIndex !== undefined ? visualization.layers[layerIndex] : compatibleLayers[0]; - - const { fields, timeField, splitField, dataView } = await extractFields( - selectedLayer, - vis, - dataViewClient - ); - - const jobConfig = createEmptyJob(); - const datafeedConfig = createEmptyDatafeed(dataView.title); - - const combinedFiltersAndQueries = combineQueriesAndFilters( - { query, filters }, - { query: vis.state.query, filters: vis.state.filters }, - dataView, - kibanaConfig - ); - - datafeedConfig.query = combinedFiltersAndQueries; - - jobConfig.analysis_config.detectors = createDetectors(fields, splitField); - - jobConfig.data_description.time_field = timeField.sourceField; - jobConfig.analysis_config.bucket_span = DEFAULT_BUCKET_SPAN; - if (splitField) { - jobConfig.analysis_config.influencers = [splitField.sourceField]; - } - - const createdBy = - splitField || jobConfig.analysis_config.detectors.length > 1 - ? CREATED_BY_LABEL.MULTI_METRIC - : CREATED_BY_LABEL.SINGLE_METRIC; - - return { - jobConfig, - datafeedConfig, - createdBy, - }; -} - -async function extractFields( - layer: XYLayerConfig, - vis: LensSavedObjectAttributes, - dataViewClient: DataViewsContract -) { - if (!isCompatibleLayer(layer)) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.incompatibleLayerType', { - defaultMessage: 'Layer is incompatible. Only chart layers can be used.', - }) - ); - } - - const indexpattern = vis.state.datasourceStates.indexpattern as IndexPatternPersistedState; - const compatibleIndexPatternLayer = Object.entries(indexpattern.layers).find( - ([id]) => layer.layerId === id - ); - if (compatibleIndexPatternLayer === undefined) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noCompatibleLayers', { - defaultMessage: - 'Visualization does not contain any layers which can be used for creating an anomaly detection job.', - }) - ); - } - - const [layerId, columnsLayer] = compatibleIndexPatternLayer; - - const columns = getColumns(columnsLayer, layer); - const timeField = Object.values(columns).find(({ dataType }) => dataType === 'date'); - if (timeField === undefined) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noDateField', { - defaultMessage: 'Cannot find a date field.', - }) - ); - } - - const fields = layer.accessors.map((a) => columns[a]); - - const splitField = layer.splitAccessor ? columns[layer.splitAccessor] : null; - - if ( - splitField !== null && - isTermsField(splitField) && - splitField.params.secondaryFields?.length - ) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.splitFieldHasMultipleFields', { - defaultMessage: 'Selected split field contains more than one field.', - }) - ); - } - - if (splitField !== null && isCompatibleSplitFieldType(splitField) === false) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.splitFieldMustBeString', { - defaultMessage: 'Selected split field type must be string.', - }) - ); - } - - const dataView = await getDataViewFromLens(vis.references, layerId, dataViewClient); - if (dataView === null) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noDataViews', { - defaultMessage: 'No data views can be found in the visualization.', - }) - ); - } - - if (timeField.sourceField !== dataView.timeFieldName) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.timeFieldNotInDataView', { - defaultMessage: - 'Selected time field must be the default time field configured for data view.', - }) - ); - } - - return { fields, timeField, splitField, dataView }; -} - -function createDetectors( - fields: FieldBasedIndexPatternColumn[], - splitField: FieldBasedIndexPatternColumn | null -) { - return fields.map(({ operationType, sourceField }) => { - return { - function: getMlFunction(operationType), - field_name: sourceField, - ...(splitField ? { partition_field_name: splitField.sourceField } : {}), - }; - }); -} - -async function getDataViewFromLens( - references: SavedObjectReference[], - layerId: string, - dataViewClient: DataViewsContract -) { - const dv = references.find( - (r) => r.type === 'index-pattern' && r.name === `indexpattern-datasource-layer-${layerId}` - ); - if (!dv) { - return null; - } - return dataViewClient.get(dv.id); -} - -function getColumns( - { columns }: Omit, - layer: XYDataLayerConfig -) { - layer.accessors.forEach((a) => { - const col = columns[a]; - // fail early if any of the cols being used as accessors - // contain functions we don't support - return col.dataType !== 'date' && getMlFunction(col.operationType); - }); - - if (Object.values(columns).some((c) => hasSourceField(c) === false)) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.colsNoSourceField', { - defaultMessage: 'Some columns do not contain a source field.', - }) - ); - } - - if (Object.values(columns).some((c) => hasIncompatibleProperties(c) === true)) { - throw Error( - i18n.translate('xpack.ml.newJob.fromLens.createJob.error.colsUsingFilterTimeSift', { - defaultMessage: - 'Columns contain settings which are incompatible with ML detectors, time shift and filter by are not supported.', - }) - ); - } - - return columns as Record; -} - -function combineQueriesAndFilters( - dashboard: { query: Query; filters: Filter[] }, - vis: { query: Query; filters: Filter[] }, - dataView: DataViewBase, - kibanaConfig: IUiSettingsClient -): estypes.QueryDslQueryContainer { - const { combinedQuery: dashboardQueries } = createQueries( - { - query: dashboard.query, - filter: dashboard.filters, - }, - dataView, - kibanaConfig - ); - - const { combinedQuery: visQueries } = createQueries( - { - query: vis.query, - filter: vis.filters, - }, - dataView, - kibanaConfig - ); - - const mergedQueries = mergeWith( - dashboardQueries, - visQueries, - (objValue: estypes.QueryDslQueryContainer, srcValue: estypes.QueryDslQueryContainer) => { - if (Array.isArray(objValue)) { - return objValue.concat(srcValue); - } - } - ); - - return mergedQueries; -} diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/index.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/index.ts index 373e445748ab..0caf7b9704bf 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/index.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/index.ts @@ -5,8 +5,12 @@ * 2.0. */ -export type { LayerResult } from './create_job'; +export type { LayerResult } from './visualization_extractor'; +export { VisualizationExtractor } from './visualization_extractor'; export { resolver } from './route_resolver'; -export { getResultLayersFromEmbeddable } from './create_job'; -export { convertLensToADJob } from './convert_lens_to_job_action'; -export { getJobsItemsFromEmbeddable, isCompatibleVisualizationType } from './utils'; +export { QuickJobCreator } from './quick_create_job'; +export { + getJobsItemsFromEmbeddable, + isCompatibleVisualizationType, + redirectToADJobWizards, +} from './utils'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/quick_create_job.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/quick_create_job.ts new file mode 100644 index 000000000000..a9585fe61736 --- /dev/null +++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/quick_create_job.ts @@ -0,0 +1,333 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mergeWith, uniqBy, isEqual } from 'lodash'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { Embeddable } from '@kbn/lens-plugin/public'; +import type { IUiSettingsClient } from '@kbn/core/public'; +import type { DataViewsContract } from '@kbn/data-views-plugin/public'; +import type { TimefilterContract } from '@kbn/data-plugin/public'; + +import { Filter, Query, DataViewBase } from '@kbn/es-query'; + +import type { LensSavedObjectAttributes, XYDataLayerConfig } from '@kbn/lens-plugin/public'; + +import { i18n } from '@kbn/i18n'; + +import type { JobCreatorType } from '../common/job_creator'; +import { createEmptyJob, createEmptyDatafeed } from '../common/job_creator/util/default_configs'; +import { stashJobForCloning } from '../common/job_creator/util/general'; +import type { ErrorType } from '../../../../../common/util/errors'; +import { createDatafeedId } from '../../../../../common/util/job_utils'; +import type { MlApiServices } from '../../../services/ml_api_service'; +import { + CREATED_BY_LABEL, + DEFAULT_BUCKET_SPAN, + JOB_TYPE, +} from '../../../../../common/constants/new_job'; +import { createQueries } from '../utils/new_job_utils'; +import { isCompatibleLayer, createDetectors, getJobsItemsFromEmbeddable } from './utils'; +import { VisualizationExtractor } from './visualization_extractor'; + +interface CreationState { + success: boolean; + error?: ErrorType; +} + +interface CreateState { + jobCreated: CreationState; + datafeedCreated: CreationState; + jobOpened: CreationState; + datafeedStarted: CreationState; +} + +export class QuickJobCreator { + constructor( + private dataViewClient: DataViewsContract, + private kibanaConfig: IUiSettingsClient, + private timeFilter: TimefilterContract, + private mlApiServices: MlApiServices + ) {} + + public async createAndSaveJob( + jobId: string, + bucketSpan: string, + embeddable: Embeddable, + startJob: boolean, + runInRealTime: boolean, + layerIndex: number + ): Promise { + const { query, filters, to, from, vis } = getJobsItemsFromEmbeddable(embeddable); + if (query === undefined || filters === undefined) { + throw new Error('Cannot create job, query and filters are undefined'); + } + + const { jobConfig, datafeedConfig, start, end, jobType } = await this.createJob( + vis, + from, + to, + query, + filters, + bucketSpan, + + layerIndex + ); + const job = { + ...jobConfig, + job_id: jobId, + custom_settings: { + created_by: + jobType === JOB_TYPE.SINGLE_METRIC + ? CREATED_BY_LABEL.SINGLE_METRIC_FROM_LENS + : CREATED_BY_LABEL.MULTI_METRIC_FROM_LENS, + }, + }; + + const datafeedId = createDatafeedId(jobId); + const datafeed = { ...datafeedConfig, job_id: jobId, datafeed_id: datafeedId }; + + const result: CreateState = { + jobCreated: { success: false }, + datafeedCreated: { success: false }, + jobOpened: { success: false }, + datafeedStarted: { success: false }, + }; + + try { + await this.mlApiServices.addJob({ jobId: job.job_id, job }); + } catch (error) { + result.jobCreated.error = error; + return result; + } + result.jobCreated.success = true; + + try { + await this.mlApiServices.addDatafeed({ datafeedId, datafeedConfig: datafeed }); + } catch (error) { + result.datafeedCreated.error = error; + return result; + } + result.datafeedCreated.success = true; + + if (startJob) { + try { + await this.mlApiServices.openJob({ jobId }); + } catch (error) { + // job may already be open, so ignore 409 error. + if (error.body.statusCode !== 409) { + result.jobOpened.error = error; + return result; + } + } + result.jobOpened.success = true; + + try { + await this.mlApiServices.startDatafeed({ + datafeedId, + start, + ...(runInRealTime ? {} : { end }), + }); + } catch (error) { + result.datafeedStarted.error = error; + return result; + } + result.datafeedStarted.success = true; + } + + return result; + } + public async createAndStashADJob( + vis: LensSavedObjectAttributes, + startString: string, + endString: string, + query: Query, + filters: Filter[], + layerIndex: number | undefined + ) { + try { + const { jobConfig, datafeedConfig, jobType, start, end, includeTimeRange } = + await this.createJob( + vis, + startString, + endString, + query, + filters, + DEFAULT_BUCKET_SPAN, + layerIndex + ); + + // add job config and start and end dates to the + // job cloning stash, so they can be used + // by the new job wizards + stashJobForCloning( + { + jobConfig, + datafeedConfig, + createdBy: + jobType === JOB_TYPE.SINGLE_METRIC + ? CREATED_BY_LABEL.SINGLE_METRIC + : CREATED_BY_LABEL.MULTI_METRIC, + start, + end, + } as JobCreatorType, + true, + includeTimeRange, + !includeTimeRange + ); + } catch (error) { + // eslint-disable-next-line no-console + console.error(error); + } + } + + async createJob( + vis: LensSavedObjectAttributes, + startString: string, + endString: string, + query: Query, + filters: Filter[], + bucketSpan: string, + layerIndex: number | undefined + ) { + const { jobConfig, datafeedConfig, jobType } = await this.createADJobFromLensSavedObject( + vis, + query, + filters, + bucketSpan, + layerIndex + ); + + let start: number | undefined; + let end: number | undefined; + let includeTimeRange = true; + + try { + // attempt to parse the start and end dates. + // if start and end values cannot be determined + // instruct the job cloning code to auto-select the + // full time range for the index. + const { min, max } = this.timeFilter.calculateBounds({ to: endString, from: startString }); + start = min?.valueOf(); + end = max?.valueOf(); + + if (start === undefined || end === undefined || isNaN(start) || isNaN(end)) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.timeRange', { + defaultMessage: 'Incompatible time range', + }) + ); + } + } catch (error) { + // eslint-disable-next-line no-console + console.error(error); + includeTimeRange = false; + start = undefined; + end = undefined; + } + + return { + jobConfig, + datafeedConfig, + jobType, + start, + end, + includeTimeRange, + }; + } + + private async createADJobFromLensSavedObject( + vis: LensSavedObjectAttributes, + query: Query, + filters: Filter[], + bucketSpan: string, + layerIndex?: number + ) { + const visualization = vis.state.visualization as { layers: XYDataLayerConfig[] }; + + const compatibleLayers = visualization.layers.filter(isCompatibleLayer); + + const selectedLayer = + layerIndex !== undefined ? visualization.layers[layerIndex] : compatibleLayers[0]; + + const visExtractor = new VisualizationExtractor(this.dataViewClient); + const { fields, timeField, splitField, dataView } = await visExtractor.extractFields( + selectedLayer, + vis + ); + + const jobConfig = createEmptyJob(); + const datafeedConfig = createEmptyDatafeed(dataView.title); + + const combinedFiltersAndQueries = this.combineQueriesAndFilters( + { query, filters }, + { query: vis.state.query, filters: vis.state.filters }, + dataView + ); + + datafeedConfig.query = combinedFiltersAndQueries; + + jobConfig.analysis_config.detectors = createDetectors(fields, splitField); + + jobConfig.data_description.time_field = timeField.sourceField; + jobConfig.analysis_config.bucket_span = bucketSpan; + if (splitField) { + jobConfig.analysis_config.influencers = [splitField.sourceField]; + } + const isSingleMetric = splitField === null && jobConfig.analysis_config.detectors.length === 1; + const jobType = isSingleMetric ? JOB_TYPE.SINGLE_METRIC : JOB_TYPE.MULTI_METRIC; + + if (isSingleMetric) { + jobConfig.model_plot_config = { + enabled: true, + annotations_enabled: true, + }; + } + + return { + jobConfig, + datafeedConfig, + jobType, + }; + } + + private combineQueriesAndFilters( + dashboard: { query: Query; filters: Filter[] }, + vis: { query: Query; filters: Filter[] }, + dataView: DataViewBase + ): estypes.QueryDslQueryContainer { + const { combinedQuery: dashboardQueries } = createQueries( + { + query: dashboard.query, + filter: dashboard.filters, + }, + dataView, + this.kibanaConfig + ); + + const { combinedQuery: visQueries } = createQueries( + { + query: vis.query, + filter: vis.filters, + }, + dataView, + this.kibanaConfig + ); + + const mergedQueries = mergeWith( + dashboardQueries, + visQueries, + (objValue: estypes.QueryDslQueryContainer, srcValue: estypes.QueryDslQueryContainer) => { + if (Array.isArray(objValue)) { + const combinedQuery = objValue.concat(srcValue); + return uniqBy(combinedQuery, isEqual); + } + } + ); + + return mergedQueries; + } +} diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/route_resolver.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/route_resolver.ts index a9819812601f..df487380044a 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/route_resolver.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/route_resolver.ts @@ -9,7 +9,9 @@ import rison from 'rison-node'; import type { Query } from '@kbn/es-query'; import { Filter } from '@kbn/es-query'; import type { LensSavedObjectAttributes } from '@kbn/lens-plugin/public'; -import { canCreateAndStashADJob } from './create_job'; +import { QuickJobCreator } from './quick_create_job'; +import { ml } from '../../../services/ml_api_service'; + import { getUiSettings, getDataViews, @@ -68,21 +70,8 @@ export async function resolver( layerIndex = undefined; } - const dataViewClient = getDataViews(); - const kibanaConfig = getUiSettings(); - const timeFilter = getTimefilter(); - - await canCreateAndStashADJob( - vis, - from, - to, - query, - filters, - dataViewClient, - kibanaConfig, - timeFilter, - layerIndex - ); + const jobCreator = new QuickJobCreator(getDataViews(), getUiSettings(), getTimefilter(), ml); + await jobCreator.createAndStashADJob(vis, from, to, query, filters, layerIndex); } async function getLensSavedObject(id: string) { diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts index d2440fa756a8..cec998e1262b 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/utils.ts @@ -18,9 +18,12 @@ import type { XYLayerConfig, DataType, } from '@kbn/lens-plugin/public'; +import type { SerializableRecord } from '@kbn/utility-types'; +import type { SharePluginStart } from '@kbn/share-plugin/public'; import { layerTypes } from '@kbn/lens-plugin/public'; import { KBN_FIELD_TYPES } from '@kbn/data-plugin/public'; +import { ML_PAGES, ML_APP_LOCATOR } from '../../../../../common/constants/locator'; import { ML_JOB_AGGREGATION } from '../../../../../common/constants/aggregation_types'; export const COMPATIBLE_SERIES_TYPES: SeriesType[] = [ @@ -44,8 +47,32 @@ export const COMPATIBLE_SPLIT_FIELD_TYPES: DataType[] = [ KBN_FIELD_TYPES.IP, ]; +export async function redirectToADJobWizards( + embeddable: Embeddable, + layerIndex: number, + share: SharePluginStart +) { + const { query, filters, to, from, vis } = getJobsItemsFromEmbeddable(embeddable); + const locator = share.url.locators.get(ML_APP_LOCATOR); + + const url = await locator?.getUrl({ + page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_FROM_LENS, + pageState: { + vis: vis as unknown as SerializableRecord, + from, + to, + query, + filters, + layerIndex, + }, + }); + + window.open(url, '_blank'); +} + export function getJobsItemsFromEmbeddable(embeddable: Embeddable) { - const { query, filters, timeRange } = embeddable.getInput(); + const { filters, timeRange, ...input } = embeddable.getInput(); + const query = input.query === undefined ? { query: '', language: 'kuery' } : input.query; if (timeRange === undefined) { throw Error( @@ -183,3 +210,18 @@ export function isCompatibleSplitFieldType(column: GenericIndexPatternColumn) { export function hasIncompatibleProperties(column: GenericIndexPatternColumn) { return 'timeShift' in column || 'filter' in column; } + +export function createDetectors( + fields: FieldBasedIndexPatternColumn[], + splitField: FieldBasedIndexPatternColumn | null +) { + return fields.map(({ operationType, sourceField }) => { + const func = getMlFunction(operationType); + return { + function: func, + // don't use the source field if the detector is count + ...(func === 'count' ? {} : { field_name: sourceField }), + ...(splitField ? { partition_field_name: splitField.sourceField } : {}), + }; + }); +} diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/visualization_extractor.ts b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/visualization_extractor.ts new file mode 100644 index 000000000000..d3fe88a390c1 --- /dev/null +++ b/x-pack/plugins/ml/public/application/jobs/new_job/job_from_lens/visualization_extractor.ts @@ -0,0 +1,224 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectReference } from '@kbn/core/public'; +import type { DataViewsContract } from '@kbn/data-views-plugin/public'; + +import type { + Embeddable, + LensPublicStart, + LensSavedObjectAttributes, + FieldBasedIndexPatternColumn, + XYDataLayerConfig, + IndexPatternPersistedState, + IndexPatternLayer, + XYLayerConfig, +} from '@kbn/lens-plugin/public'; +import { layerTypes } from '@kbn/lens-plugin/public'; + +import { i18n } from '@kbn/i18n'; + +import { JOB_TYPE } from '../../../../../common/constants/new_job'; +import { ErrorType } from '../../../../../common/util/errors'; +import { + getVisTypeFactory, + isCompatibleLayer, + hasIncompatibleProperties, + hasSourceField, + isTermsField, + isCompatibleSplitFieldType, + getMlFunction, + getJobsItemsFromEmbeddable, + createDetectors, +} from './utils'; + +type VisualizationType = Awaited>[number]; + +export interface LayerResult { + id: string; + layerType: typeof layerTypes[keyof typeof layerTypes]; + label: string; + icon: VisualizationType['icon']; + isCompatible: boolean; + jobType: JOB_TYPE | null; + error?: ErrorType; +} + +export class VisualizationExtractor { + constructor(private dataViewClient: DataViewsContract) {} + + public async getResultLayersFromEmbeddable( + embeddable: Embeddable, + lens: LensPublicStart + ): Promise { + const { vis } = getJobsItemsFromEmbeddable(embeddable); + return this.getLayers(vis, lens); + } + + public async extractFields(layer: XYLayerConfig, vis: LensSavedObjectAttributes) { + if (!isCompatibleLayer(layer)) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.incompatibleLayerType', { + defaultMessage: 'Layer is incompatible. Only chart layers can be used.', + }) + ); + } + + const indexpattern = vis.state.datasourceStates.indexpattern as IndexPatternPersistedState; + const compatibleIndexPatternLayer = Object.entries(indexpattern.layers).find( + ([id]) => layer.layerId === id + ); + if (compatibleIndexPatternLayer === undefined) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noCompatibleLayers', { + defaultMessage: + 'Visualization does not contain any layers which can be used for creating an anomaly detection job.', + }) + ); + } + + const [layerId, columnsLayer] = compatibleIndexPatternLayer; + + const columns = getColumns(columnsLayer, layer); + const timeField = Object.values(columns).find(({ dataType }) => dataType === 'date'); + if (timeField === undefined) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noDateField', { + defaultMessage: 'Cannot find a date field.', + }) + ); + } + + const fields = layer.accessors.map((a) => columns[a]); + + const splitField = layer.splitAccessor ? columns[layer.splitAccessor] : null; + + if ( + splitField !== null && + isTermsField(splitField) && + splitField.params.secondaryFields?.length + ) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.splitFieldHasMultipleFields', { + defaultMessage: 'Selected split field contains more than one field.', + }) + ); + } + + if (splitField !== null && isCompatibleSplitFieldType(splitField) === false) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.splitFieldMustBeString', { + defaultMessage: 'Selected split field type must be string.', + }) + ); + } + + const dataView = await this.getDataViewFromLens(vis.references, layerId); + if (dataView === null) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.noDataViews', { + defaultMessage: 'No data views can be found in the visualization.', + }) + ); + } + + if (timeField.sourceField !== dataView.timeFieldName) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.timeFieldNotInDataView', { + defaultMessage: + 'Selected time field must be the default time field configured for data view.', + }) + ); + } + + return { fields, timeField, splitField, dataView }; + } + + private async getLayers( + vis: LensSavedObjectAttributes, + lens: LensPublicStart + ): Promise { + const visualization = vis.state.visualization as { layers: XYLayerConfig[] }; + const getVisType = await getVisTypeFactory(lens); + + const layers: LayerResult[] = await Promise.all( + visualization.layers + .filter(({ layerType }) => layerType === layerTypes.DATA) // remove non chart layers + .map(async (layer) => { + const { icon, label } = getVisType(layer); + try { + const { fields, splitField } = await this.extractFields(layer, vis); + const detectors = createDetectors(fields, splitField); + const jobType = + splitField || detectors.length > 1 ? JOB_TYPE.MULTI_METRIC : JOB_TYPE.SINGLE_METRIC; + + return { + id: layer.layerId, + layerType: layer.layerType, + label, + icon, + jobType, + isCompatible: true, + }; + } catch (error) { + return { + id: layer.layerId, + layerType: layer.layerType, + label, + icon, + jobType: null, + isCompatible: false, + error, + }; + } + }) + ); + + return layers; + } + + private async getDataViewFromLens(references: SavedObjectReference[], layerId: string) { + const dv = references.find( + (r) => r.type === 'index-pattern' && r.name === `indexpattern-datasource-layer-${layerId}` + ); + if (!dv) { + return null; + } + return this.dataViewClient.get(dv.id); + } +} + +function getColumns( + { columns }: Omit, + layer: XYDataLayerConfig +) { + layer.accessors.forEach((a) => { + const col = columns[a]; + // fail early if any of the cols being used as accessors + // contain functions we don't support + return col.dataType !== 'date' && getMlFunction(col.operationType); + }); + + if (Object.values(columns).some((c) => hasSourceField(c) === false)) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.colsNoSourceField', { + defaultMessage: 'Some columns do not contain a source field.', + }) + ); + } + + if (Object.values(columns).some((c) => hasIncompatibleProperties(c) === true)) { + throw Error( + i18n.translate('xpack.ml.newJob.fromLens.createJob.error.colsUsingFilterTimeSift', { + defaultMessage: + 'Columns contain settings which are incompatible with ML detectors, time shift and filter by are not supported.', + }) + ); + } + + return columns as Record; +} diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts b/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts index 1b9a3cacc410..1f8e6247a4fa 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts @@ -44,9 +44,11 @@ async function getWizardUrlFromCloningJob(createdBy: string | undefined, dataVie switch (created) { case CREATED_BY_LABEL.SINGLE_METRIC: + case CREATED_BY_LABEL.SINGLE_METRIC_FROM_LENS: page = JOB_TYPE.SINGLE_METRIC; break; case CREATED_BY_LABEL.MULTI_METRIC: + case CREATED_BY_LABEL.MULTI_METRIC_FROM_LENS: page = JOB_TYPE.MULTI_METRIC; break; case CREATED_BY_LABEL.POPULATION: diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts index 0b03d86f9dc0..9f3c3a4350a7 100644 --- a/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts @@ -130,7 +130,7 @@ export function mlApiServicesProvider(httpService: HttpService) { addJob({ jobId, job }: { jobId: string; job: Job }) { const body = JSON.stringify(job); - return httpService.http({ + return httpService.http({ path: `${basePath()}/anomaly_detectors/${jobId}`, method: 'PUT', body, @@ -247,7 +247,7 @@ export function mlApiServicesProvider(httpService: HttpService) { addDatafeed({ datafeedId, datafeedConfig }: { datafeedId: string; datafeedConfig: Datafeed }) { const body = JSON.stringify(datafeedConfig); - return httpService.http({ + return httpService.http({ path: `${basePath()}/datafeeds/${datafeedId}`, method: 'PUT', body, @@ -283,7 +283,15 @@ export function mlApiServicesProvider(httpService: HttpService) { }); }, - startDatafeed({ datafeedId, start, end }: { datafeedId: string; start: number; end: number }) { + startDatafeed({ + datafeedId, + start, + end, + }: { + datafeedId: string; + start?: number; + end?: number; + }) { const body = JSON.stringify({ ...(start !== undefined ? { start } : {}), ...(end !== undefined ? { end } : {}), diff --git a/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx b/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx index 259eb734f538..61512ff46a66 100644 --- a/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx +++ b/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx @@ -6,7 +6,7 @@ */ import { CoreStart } from '@kbn/core/public'; import moment from 'moment'; -import { takeUntil } from 'rxjs/operators'; +import { takeUntil, distinctUntilChanged, skip } from 'rxjs/operators'; import { from } from 'rxjs'; import React from 'react'; import { @@ -14,7 +14,6 @@ import { toMountPoint, wrapWithTheme, } from '@kbn/kibana-react-plugin/public'; -import { DashboardConstants } from '@kbn/dashboard-plugin/public'; import { getInitialGroupsMap } from '../../application/components/job_selector/job_selector'; import { getMlGlobalServices } from '../../application/app'; import { JobId } from '../../../common/types/anomaly_detection_jobs'; @@ -95,13 +94,14 @@ export async function resolveJobSelection( ownFocus: true, closeButtonAriaLabel: 'jobSelectorFlyout', } - ); // Close the flyout when user navigates out of the dashboard plugin + ); - currentAppId$.pipe(takeUntil(from(flyoutSession.onClose))).subscribe((appId) => { - if (appId !== DashboardConstants.DASHBOARDS_ID) { + // Close the flyout when user navigates out of the current plugin + currentAppId$ + .pipe(skip(1), takeUntil(from(flyoutSession.onClose)), distinctUntilChanged()) + .subscribe(() => { flyoutSession.close(); - } - }); + }); } catch (error) { reject(error); } diff --git a/x-pack/plugins/ml/public/embeddables/lens/context.ts b/x-pack/plugins/ml/public/embeddables/lens/context.ts new file mode 100644 index 000000000000..61a55bc001b4 --- /dev/null +++ b/x-pack/plugins/ml/public/embeddables/lens/context.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; + +import { useKibana } from '@kbn/kibana-react-plugin/public'; + +import type { SharePluginStart } from '@kbn/share-plugin/public'; +import type { LensPublicStart } from '@kbn/lens-plugin/public'; +import type { MlServicesContext } from '../../application/app'; + +interface StartPlugins { + data: DataPublicPluginStart; + share: SharePluginStart; + lens: LensPublicStart; +} +export type StartServices = CoreStart & StartPlugins & MlServicesContext; +export const useMlFromLensKibanaContext = () => useKibana(); diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout.tsx b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout.tsx index 56926c9d76c8..7bbc54d1837a 100644 --- a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout.tsx +++ b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout.tsx @@ -5,11 +5,9 @@ * 2.0. */ -import React, { FC } from 'react'; +import React, { FC, useState, useEffect } from 'react'; import type { Embeddable } from '@kbn/lens-plugin/public'; -import type { SharePluginStart } from '@kbn/share-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; - import { EuiFlyoutFooter, EuiFlyoutHeader, @@ -20,24 +18,39 @@ import { EuiTitle, EuiSpacer, EuiText, + useEuiTheme, } from '@elastic/eui'; -import { FlyoutBody } from './flyout_body'; +import { Layer } from './layer'; import type { LayerResult } from '../../../application/jobs/new_job/job_from_lens'; +import { VisualizationExtractor } from '../../../application/jobs/new_job/job_from_lens'; +import { useMlFromLensKibanaContext } from '../context'; interface Props { - layerResults: LayerResult[]; embeddable: Embeddable; - share: SharePluginStart; onClose: () => void; } -export const LensLayerSelectionFlyout: FC = ({ - onClose, - layerResults, - embeddable, - share, -}) => { +export const LensLayerSelectionFlyout: FC = ({ onClose, embeddable }) => { + const { euiTheme } = useEuiTheme(); + const { + services: { data, lens }, + } = useMlFromLensKibanaContext(); + + const [layerResults, setLayerResults] = useState([]); + + useEffect(() => { + const visExtractor = new VisualizationExtractor(data.dataViews); + visExtractor + .getResultLayersFromEmbeddable(embeddable, lens) + .then(setLayerResults) + .catch((error) => { + // eslint-disable-next-line no-console + console.error('Layers could not be extracted from embeddable', error); + onClose(); + }); + }, [data, lens, embeddable]); + return ( <> @@ -53,17 +66,15 @@ export const LensLayerSelectionFlyout: FC = ({ - - + + {layerResults.map((layer, i) => ( + + ))} diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout_body.tsx b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout_body.tsx deleted file mode 100644 index 8f0587dffcdf..000000000000 --- a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/flyout_body.tsx +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { FC } from 'react'; -import type { Embeddable } from '@kbn/lens-plugin/public'; -import type { SharePluginStart } from '@kbn/share-plugin/public'; -import { FormattedMessage } from '@kbn/i18n-react'; - -import './style.scss'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiButton, - EuiSpacer, - EuiIcon, - EuiText, - EuiSplitPanel, - EuiHorizontalRule, -} from '@elastic/eui'; - -import { convertLensToADJob } from '../../../application/jobs/new_job/job_from_lens'; -import type { LayerResult } from '../../../application/jobs/new_job/job_from_lens'; -import { CREATED_BY_LABEL } from '../../../../common/constants/new_job'; -import { extractErrorMessage } from '../../../../common/util/errors'; - -interface Props { - layerResults: LayerResult[]; - embeddable: Embeddable; - share: SharePluginStart; - onClose: () => void; -} - -export const FlyoutBody: FC = ({ onClose, layerResults, embeddable, share }) => { - function createADJob(layerIndex: number) { - convertLensToADJob(embeddable, share, layerIndex); - } - - return ( - <> - {layerResults.map((layer, i) => ( - - - - - {layer.icon && ( - - - - )} - - -
{layer.label}
-
-
-
-
- - - {layer.isCompatible ? ( - <> - - - - - - - - - - - - - - - - - - ) : ( - <> - - - - - - - - - {layer.error ? ( - extractErrorMessage(layer.error) - ) : ( - - )} - - - - - )} - -
- -
- ))} - - ); -}; diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/compatible_layer.tsx b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/compatible_layer.tsx new file mode 100644 index 000000000000..342a37fe4b0c --- /dev/null +++ b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/compatible_layer.tsx @@ -0,0 +1,471 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import React, { FC, useState, useCallback, useMemo } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import useDebounce from 'react-use/lib/useDebounce'; +import type { Embeddable } from '@kbn/lens-plugin/public'; + +import { + EuiFlexGroup, + EuiFlexItem, + EuiButton, + EuiSpacer, + EuiIcon, + EuiText, + EuiFieldText, + EuiForm, + EuiFormRow, + EuiLoadingSpinner, + EuiButtonEmpty, + EuiCheckbox, + EuiAccordion, + EuiCallOut, +} from '@elastic/eui'; + +import { + redirectToADJobWizards, + QuickJobCreator, +} from '../../../../application/jobs/new_job/job_from_lens'; +import type { LayerResult } from '../../../../application/jobs/new_job/job_from_lens'; +import { JOB_TYPE, DEFAULT_BUCKET_SPAN } from '../../../../../common/constants/new_job'; +import { extractErrorMessage } from '../../../../../common/util/errors'; +import { basicJobValidation } from '../../../../../common/util/job_utils'; +import { JOB_ID_MAX_LENGTH } from '../../../../../common/constants/validation'; +import { invalidTimeIntervalMessage } from '../../../../application/jobs/new_job/common/job_validator/util'; +import { ML_APP_LOCATOR, ML_PAGES } from '../../../../../common/constants/locator'; +import { useMlFromLensKibanaContext } from '../../context'; + +interface Props { + layer: LayerResult; + layerIndex: number; + embeddable: Embeddable; +} + +enum STATE { + DEFAULT, + VALIDATING, + SAVING, + SAVE_SUCCESS, + SAVE_FAILED, +} + +export const CompatibleLayer: FC = ({ layer, layerIndex, embeddable }) => { + const { + services: { + data, + share, + application, + uiSettings, + mlServices: { mlApiServices }, + }, + } = useMlFromLensKibanaContext(); + + const [jobId, setJobId] = useState(undefined); + const [startJob, setStartJob] = useState(true); + const [runInRealTime, setRunInRealTime] = useState(true); + const [bucketSpan, setBucketSpan] = useState(DEFAULT_BUCKET_SPAN); + + const [jobIdValidationError, setJobIdValidationError] = useState(''); + const [bucketSpanValidationError, setBucketSpanValidationError] = useState(''); + const [state, setState] = useState(STATE.DEFAULT); + const [createError, setCreateError] = useState<{ text: string; errorText: string } | null>(null); + const quickJobCreator = useMemo( + () => + new QuickJobCreator( + data.dataViews, + uiSettings, + data.query.timefilter.timefilter, + mlApiServices + ), + [data, uiSettings] + ); + + function createADJobInWizard() { + redirectToADJobWizards(embeddable, layerIndex, share); + } + + async function createADJob() { + if (jobId === undefined) { + return; + } + + setState(STATE.SAVING); + setCreateError(null); + const result = await quickJobCreator.createAndSaveJob( + jobId, + bucketSpan, + embeddable, + startJob, + runInRealTime, + layerIndex + ); + const error = checkForCreationErrors(result); + if (error === null) { + setState(STATE.SAVE_SUCCESS); + } else { + setState(STATE.SAVE_FAILED); + setCreateError(error); + } + } + + const viewResults = useCallback( + async (jobType: JOB_TYPE | null) => { + const { timeRange } = embeddable.getInput(); + const locator = share.url.locators.get(ML_APP_LOCATOR); + if (locator) { + const page = startJob + ? jobType === JOB_TYPE.MULTI_METRIC + ? ML_PAGES.ANOMALY_EXPLORER + : ML_PAGES.SINGLE_METRIC_VIEWER + : ML_PAGES.ANOMALY_DETECTION_JOBS_MANAGE; + const pageState = startJob + ? { + jobIds: [jobId], + timeRange, + } + : { jobId }; + + const url = await locator!.getUrl({ + page, + pageState, + }); + + application.navigateToUrl(url); + } + }, + [jobId, embeddable, share, application, startJob] + ); + + function setStartJobWrapper(start: boolean) { + setStartJob(start); + setRunInRealTime(start && runInRealTime); + } + + useDebounce( + function validateJobId() { + if (jobId === undefined) { + return; + } + setJobIdValidationError(''); + setBucketSpanValidationError(''); + const validationResults = basicJobValidation( + { + job_id: jobId, + analysis_config: { detectors: [], bucket_span: bucketSpan }, + } as unknown as estypes.MlJob, + undefined, + { max_model_memory_limit: '', effective_max_model_memory_limit: '' }, + true + ); + + if (validationResults.contains('job_id_invalid')) { + setJobIdValidationError( + i18n.translate('xpack.ml.newJob.wizard.validateJob.jobNameAllowedCharactersDescription', { + defaultMessage: + 'Job ID can contain lowercase alphanumeric (a-z and 0-9), hyphens or underscores; ' + + 'must start and end with an alphanumeric character', + }) + ); + } else if (validationResults.contains('job_id_invalid_max_length')) { + setJobIdValidationError( + i18n.translate('xpack.ml.newJob.wizard.validateJob.jobIdInvalidMaxLengthErrorMessage', { + defaultMessage: + 'Job ID must be no more than {maxLength, plural, one {# character} other {# characters}} long.', + values: { + maxLength: JOB_ID_MAX_LENGTH, + }, + }) + ); + } else { + mlApiServices.jobs + .jobsExist([jobId]) + .then((resp) => { + if (resp[jobId].exists) { + setJobIdValidationError( + i18n.translate('xpack.ml.newJob.wizard.validateJob.jobNameAlreadyExists', { + defaultMessage: + 'Job ID already exists. A job ID cannot be the same as an existing job or group.', + }) + ); + } + }) + .catch((error) => { + // eslint-disable-next-line no-console + console.error('Could not validate whether job ID exists'); + }); + } + + if (validationResults.contains('bucket_span_invalid')) { + setBucketSpanValidationError(invalidTimeIntervalMessage(bucketSpan)); + } + setState(STATE.DEFAULT); + }, + 500, + [jobId, bucketSpan] + ); + + return ( + <> + {state !== STATE.SAVE_SUCCESS && state !== STATE.SAVING ? ( + <> + + + + + + + + + {layer.jobType === JOB_TYPE.MULTI_METRIC ? ( + + ) : ( + + )} + + + + + + + { + setJobId(e.target.value); + setState(STATE.VALIDATING); + }} + /> + + + + + + + { + setBucketSpan(e.target.value); + setState(STATE.VALIDATING); + }} + /> + + + + setStartJobWrapper(e.target.checked)} + label={i18n.translate( + 'xpack.ml.embeddables.lensLayerFlyout.createJobCallout.additionalSettings.start', + { + defaultMessage: 'Start the job after saving', + } + )} + /> + + + + + setRunInRealTime(e.target.checked)} + label={i18n.translate( + 'xpack.ml.embeddables.lensLayerFlyout.createJobCallout.additionalSettings.realTime', + { + defaultMessage: 'Leave the job running for new data', + } + )} + /> + + + + + + + + + + + + + + + + + + + + ) : null} + + {state === STATE.SAVE_SUCCESS ? ( + <> + + + + + + + + + + + + + + + + {startJob === false ? ( + + ) : layer.jobType === JOB_TYPE.MULTI_METRIC ? ( + + ) : ( + + )} + + + ) : null} + + {state === STATE.SAVING ? ( + + + + + + + + + ) : null} + + {state === STATE.SAVE_FAILED && createError !== null ? ( + <> + + + {createError.errorText} + + + ) : null} + + ); +}; + +const checkForCreationErrors = ( + result: Awaited> +) => { + if (result.jobCreated.error) { + return { + text: i18n.translate('xpack.ml.embeddables.lensLayerFlyout.jobCreateError.jobCreated', { + defaultMessage: 'Job could not be created.', + }), + errorText: extractErrorMessage(result.jobCreated.error), + }; + } else if (result.datafeedCreated.error) { + return { + text: i18n.translate('xpack.ml.embeddables.lensLayerFlyout.jobCreateError.datafeedCreated', { + defaultMessage: 'Job created but datafeed could not be created.', + }), + errorText: extractErrorMessage(result.datafeedCreated.error), + }; + } else if (result.jobOpened.error) { + return { + text: i18n.translate('xpack.ml.embeddables.lensLayerFlyout.jobCreateError.jobOpened', { + defaultMessage: 'Job and datafeed created but the job could not be opened.', + }), + errorText: extractErrorMessage(result.jobOpened.error), + }; + } else if (result.datafeedStarted.error) { + return { + text: i18n.translate('xpack.ml.embeddables.lensLayerFlyout.jobCreateError.datafeedStarted', { + defaultMessage: 'Job and datafeed created but the datafeed could not be started.', + }), + errorText: extractErrorMessage(result.datafeedStarted.error), + }; + } else { + return null; + } +}; diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/incompatible_layer.tsx b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/incompatible_layer.tsx new file mode 100644 index 000000000000..4e6dc1eb84a1 --- /dev/null +++ b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/incompatible_layer.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiText } from '@elastic/eui'; + +import type { LayerResult } from '../../../../application/jobs/new_job/job_from_lens'; + +import { extractErrorMessage } from '../../../../../common/util/errors'; + +interface Props { + layer: LayerResult; +} + +export const IncompatibleLayer: FC = ({ layer }) => { + return ( + + + + + + + + + {layer.error ? ( + extractErrorMessage(layer.error) + ) : ( + + )} + + + + ); +}; diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/index.ts b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/index.ts new file mode 100644 index 000000000000..bbbfe2fbaa8e --- /dev/null +++ b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +export { Layer } from './layer'; diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/layer.tsx b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/layer.tsx new file mode 100644 index 000000000000..0614292cbf9d --- /dev/null +++ b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/layer/layer.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import type { Embeddable } from '@kbn/lens-plugin/public'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiIcon, + EuiText, + EuiSplitPanel, + EuiHorizontalRule, +} from '@elastic/eui'; +import type { LayerResult } from '../../../../application/jobs/new_job/job_from_lens'; +import { CompatibleLayer } from './compatible_layer'; +import { IncompatibleLayer } from './incompatible_layer'; + +interface Props { + layer: LayerResult; + layerIndex: number; + embeddable: Embeddable; +} + +export const Layer: FC = ({ layer, layerIndex, embeddable }) => { + return ( + <> + + + + {layer.icon && ( + + + + )} + + +
{layer.label}
+
+
+
+
+ + + {layer.isCompatible ? ( + + ) : ( + + )} + +
+ + + ); +}; diff --git a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/style.scss b/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/style.scss deleted file mode 100644 index 0da0eb92c963..000000000000 --- a/x-pack/plugins/ml/public/embeddables/lens/lens_vis_layer_selection_flyout/style.scss +++ /dev/null @@ -1,3 +0,0 @@ -.mlLensToJobFlyoutBody { - background-color: $euiColorLightestShade; -} diff --git a/x-pack/plugins/ml/public/embeddables/lens/show_flyout.tsx b/x-pack/plugins/ml/public/embeddables/lens/show_flyout.tsx index 81a9cfcf9dc8..325565998f1e 100644 --- a/x-pack/plugins/ml/public/embeddables/lens/show_flyout.tsx +++ b/x-pack/plugins/ml/public/embeddables/lens/show_flyout.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { takeUntil } from 'rxjs/operators'; +import { takeUntil, distinctUntilChanged, skip } from 'rxjs/operators'; import { from } from 'rxjs'; import type { Embeddable } from '@kbn/lens-plugin/public'; import type { CoreStart } from '@kbn/core/public'; @@ -19,15 +19,10 @@ import { wrapWithTheme, KibanaContextProvider, } from '@kbn/kibana-react-plugin/public'; -import { DashboardConstants } from '@kbn/dashboard-plugin/public'; + import { getMlGlobalServices } from '../../application/app'; import { LensLayerSelectionFlyout } from './lens_vis_layer_selection_flyout'; -import { - getResultLayersFromEmbeddable, - convertLensToADJob, -} from '../../application/jobs/new_job/job_from_lens'; - export async function showLensVisToADJobFlyout( embeddable: Embeddable, coreStart: CoreStart, @@ -44,14 +39,6 @@ export async function showLensVisToADJobFlyout( return new Promise(async (resolve, reject) => { try { - // do not show the flyout if the results only contain one layer - // and that layer can be used for creating an AD job - const layerResults = await getResultLayersFromEmbeddable(embeddable, data.dataViews, lens); - if (layerResults.length === 1 && layerResults[0].isCompatible) { - convertLensToADJob(embeddable, share, 0); - return resolve(); - } - const onFlyoutClose = () => { flyoutSession.close(); resolve(); @@ -61,7 +48,13 @@ export async function showLensVisToADJobFlyout( toMountPoint( wrapWithTheme( , theme$ @@ -86,12 +77,12 @@ export async function showLensVisToADJobFlyout( } ); - // Close the flyout when user navigates out of the dashboard plugin - currentAppId$.pipe(takeUntil(from(flyoutSession.onClose))).subscribe((appId) => { - if (appId !== DashboardConstants.DASHBOARDS_ID) { + // Close the flyout when user navigates out of the current plugin + currentAppId$ + .pipe(skip(1), takeUntil(from(flyoutSession.onClose)), distinctUntilChanged()) + .subscribe(() => { flyoutSession.close(); - } - }); + }); } catch (error) { reject(error); } diff --git a/x-pack/plugins/ml/public/ui_actions/open_lens_vis_in_ml_action.tsx b/x-pack/plugins/ml/public/ui_actions/open_lens_vis_in_ml_action.tsx index 692f0e2ac5f9..da083a2ca34a 100644 --- a/x-pack/plugins/ml/public/ui_actions/open_lens_vis_in_ml_action.tsx +++ b/x-pack/plugins/ml/public/ui_actions/open_lens_vis_in_ml_action.tsx @@ -57,8 +57,14 @@ export function createLensVisToADJobAction(getStartServices: MlCoreSetup['getSta return false; } - const { vis } = getJobsItemsFromEmbeddable(context.embeddable); - return isCompatibleVisualizationType(vis); + try { + const { vis } = getJobsItemsFromEmbeddable(context.embeddable); + return isCompatibleVisualizationType(vis); + } catch (error) { + // eslint-disable-next-line no-console + console.error('Error attempting to check for ML job compatibility', error); + return false; + } }, }); } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 7b89ea63eb46..8d405c00cc55 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -19049,7 +19049,6 @@ "xpack.ml.deleteSpaceAwareItemCheckModal.unTagSuccessTitle": "Mise à jour réussie de {id}", "xpack.ml.editModelSnapshotFlyout.calloutText": "Il s'agit du snapshot actuel qui est en cours d'utilisation par {jobId} ; il ne peut donc pas être supprimé.", "xpack.ml.editModelSnapshotFlyout.title": "Modifier le snapshot {ssId}", - "xpack.ml.embeddables.lensLayerFlyout.createJobCalloutTitle": "Ce calque peut être utilisé pour créer une tâche {type}", "xpack.ml.entityFilter.addFilterAriaLabel": "Ajouter un filtre pour {influencerFieldName} {influencerFieldValue}", "xpack.ml.entityFilter.removeFilterAriaLabel": "Retirer le filtre pour {influencerFieldName} {influencerFieldValue}", "xpack.ml.explorer.annotationsOutOfTotalCountTitle": "Premiers {visibleCount} sur un total de {totalCount}", @@ -20125,7 +20124,6 @@ "xpack.ml.embeddables.lensLayerFlyout.closeButton": "Fermer", "xpack.ml.embeddables.lensLayerFlyout.createJobButton": "Créer une tâche à partir de ce calque", "xpack.ml.embeddables.lensLayerFlyout.defaultLayerError": "Ce calque ne peut pas être utilisé pour créer une tâche de détection des anomalies", - "xpack.ml.embeddables.lensLayerFlyout.secondTitle": "Sélectionnez un calque compatible à partir de la visualisation pour créer une tâche de détection des anomalies.", "xpack.ml.embeddables.lensLayerFlyout.title": "Créer une tâche de détection des anomalies", "xpack.ml.entityFilter.addFilterTooltip": "Ajouter un filtre", "xpack.ml.entityFilter.removeFilterTooltip": "Supprimer le filtre", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index c63e2c118d8e..92f7bb0888cd 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -19031,7 +19031,6 @@ "xpack.ml.deleteSpaceAwareItemCheckModal.unTagSuccessTitle": "正常に {id} を更新しました", "xpack.ml.editModelSnapshotFlyout.calloutText": "これはジョブ{jobId}で使用されている現在のスナップショットであるため削除できません。", "xpack.ml.editModelSnapshotFlyout.title": "スナップショット{ssId}の編集", - "xpack.ml.embeddables.lensLayerFlyout.createJobCalloutTitle": "このレイヤーを使用して、{type}ジョブを作成できます", "xpack.ml.entityFilter.addFilterAriaLabel": "{influencerFieldName} {influencerFieldValue}のフィルターを追加", "xpack.ml.entityFilter.removeFilterAriaLabel": "{influencerFieldName} {influencerFieldValue}のフィルターを削除", "xpack.ml.explorer.annotationsOutOfTotalCountTitle": "合計{totalCount}件中最初の{visibleCount}件", @@ -20108,7 +20107,6 @@ "xpack.ml.embeddables.lensLayerFlyout.closeButton": "閉じる", "xpack.ml.embeddables.lensLayerFlyout.createJobButton": "このレイヤーからジョブを作成", "xpack.ml.embeddables.lensLayerFlyout.defaultLayerError": "このレイヤーを使用して、異常検知ジョブを作成できません", - "xpack.ml.embeddables.lensLayerFlyout.secondTitle": "ビジュアライゼーションから互換性があるレイヤーを選択し、異常検知ジョブを作成してください。", "xpack.ml.embeddables.lensLayerFlyout.title": "異常検知ジョブの作成", "xpack.ml.entityFilter.addFilterTooltip": "フィルターを追加します", "xpack.ml.entityFilter.removeFilterTooltip": "フィルターを削除", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 944064892238..4884259e023c 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -19055,7 +19055,6 @@ "xpack.ml.deleteSpaceAwareItemCheckModal.unTagSuccessTitle": "成功更新 {id}", "xpack.ml.editModelSnapshotFlyout.calloutText": "这是作业 {jobId} 当前正在使用的快照,因此无法删除。", "xpack.ml.editModelSnapshotFlyout.title": "编辑快照 {ssId}", - "xpack.ml.embeddables.lensLayerFlyout.createJobCalloutTitle": "此图层可用于创建 {type} 作业", "xpack.ml.entityFilter.addFilterAriaLabel": "添加 {influencerFieldName} {influencerFieldValue} 的筛选", "xpack.ml.entityFilter.removeFilterAriaLabel": "移除 {influencerFieldName} {influencerFieldValue} 的筛选", "xpack.ml.explorer.annotationsOutOfTotalCountTitle": "前 {visibleCount} 个,共 {totalCount} 个", @@ -20135,7 +20134,6 @@ "xpack.ml.embeddables.lensLayerFlyout.closeButton": "关闭", "xpack.ml.embeddables.lensLayerFlyout.createJobButton": "从此图层创建作业", "xpack.ml.embeddables.lensLayerFlyout.defaultLayerError": "此图层无法用于创建异常检测作业", - "xpack.ml.embeddables.lensLayerFlyout.secondTitle": "从可视化中选择兼容的图层以创建异常检测作业。", "xpack.ml.embeddables.lensLayerFlyout.title": "创建异常检测作业", "xpack.ml.entityFilter.addFilterTooltip": "添加筛选", "xpack.ml.entityFilter.removeFilterTooltip": "移除筛选", diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/index.ts b/x-pack/test/functional/apps/ml/anomaly_detection/index.ts index 60bc92990b90..35bfd4471233 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/index.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection/index.ts @@ -49,5 +49,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./custom_urls')); loadTestFile(require.resolve('./forecasts')); loadTestFile(require.resolve('./lens_to_ml')); + loadTestFile(require.resolve('./lens_to_ml_with_wizard')); }); } diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml.ts b/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml.ts index 31964c5144d8..a2c176fa2dda 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml.ts @@ -7,12 +7,10 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ getService, getPageObject, getPageObjects }: FtrProviderContext) { +export default function ({ getService, getPageObjects }: FtrProviderContext) { const ml = getService('ml'); const dashboardPanelActions = getService('dashboardPanelActions'); const browser = getService('browser'); - const retry = getService('retry'); - const headerPage = getPageObject('header'); const PageObjects = getPageObjects(['common', 'timePicker', 'dashboard']); const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); @@ -21,13 +19,6 @@ export default function ({ getService, getPageObject, getPageObjects }: FtrProvi const dashboardArchive = 'x-pack/test/functional/fixtures/kbn_archiver/ml/lens_to_ml_dashboard.json'; - async function retrySwitchTab(tabIndex: number, seconds: number) { - await retry.tryForTime(seconds * 1000, async () => { - await browser.switchTab(tabIndex); - }); - await browser.setWindowSize(1920, 1080); - } - async function setFarequoteTimerange() { await PageObjects.timePicker.setAbsoluteRange( 'Feb 7, 2016 @ 00:00:00.000', @@ -45,50 +36,6 @@ export default function ({ getService, getPageObject, getPageObjects }: FtrProvi await dashboardPanelActions.openContextMenuMorePanel(header); } - async function createJobInWizard( - jobId: string, - splitField?: string, - aggAndFieldIdentifier?: string - ) { - await headerPage.waitUntilLoadingHasFinished(); - - if (splitField !== undefined) { - await ml.jobTypeSelection.assertMultiMetricJobWizardOpen(); - await ml.jobWizardMultiMetric.assertDetectorSplitExists(splitField); - await ml.jobWizardCommon.assertInfluencerSelection([splitField]); - } else if (aggAndFieldIdentifier !== undefined) { - await ml.jobTypeSelection.assertSingleMetricJobWizardOpen(); - await ml.jobWizardCommon.assertAggAndFieldInputExists(); - await ml.jobWizardCommon.selectAggAndField(aggAndFieldIdentifier, true); - await ml.jobWizardCommon.assertAnomalyChartExists('LINE'); - } - - await ml.testExecution.logTestStep('job creation displays the job details step'); - await ml.jobWizardCommon.advanceToJobDetailsSection(); - - await ml.testExecution.logTestStep('job creation inputs the job id'); - await ml.jobWizardCommon.assertJobIdInputExists(); - await ml.jobWizardCommon.setJobId(jobId); - - await ml.testExecution.logTestStep('job creation displays the validation step'); - await ml.jobWizardCommon.advanceToValidationSection(); - - await ml.testExecution.logTestStep('job creation displays the summary step'); - await ml.jobWizardCommon.advanceToSummarySection(); - - await ml.testExecution.logTestStep('job creation creates the job and finishes processing'); - await ml.jobWizardCommon.assertCreateJobButtonExists(); - await ml.jobWizardCommon.createJobAndWaitForCompletion(); - - await ml.testExecution.logTestStep('job creation displays the created job in the job list'); - await ml.navigation.navigateToMl(); - await ml.navigation.navigateToJobManagement(); - - await ml.jobTable.filterWithSearchString(jobId, 1); - - await ml.jobTable.assertJobRowJobId(jobId); - } - describe('create jobs from lens', function () { this.tags(['ml']); @@ -110,52 +57,43 @@ export default function ({ getService, getPageObject, getPageObjects }: FtrProvi await PageObjects.common.navigateToApp('dashboard'); }); - let tabsCount = 1; - - afterEach(async () => { - if (tabsCount > 1) { - await browser.closeCurrentWindow(); - await retrySwitchTab(0, 10); - tabsCount--; - } - }); - - it('can create multi metric job from vis with single layer', async () => { - const selectedPanelTitle = 'panel1'; + it('can create a single metric job from vis with single layer', async () => { + const selectedPanelTitle = 'panel2'; const jobId = 'job_from_lens_1'; - const splitField = 'airline'; + const numberOfCompatibleLayers = 1; + const layerIndex = 0; await dashboardPreparation(selectedPanelTitle); await ml.lensVisualizations.clickCreateMLJobMenuAction(); - await retrySwitchTab(1, 10); - tabsCount++; + await ml.lensVisualizations.assertLensLayerSelectorExists(); - await createJobInWizard(jobId, splitField, undefined); - }); + await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); - it('can create single metric job from vis with single layer', async () => { - const selectedPanelTitle = 'panel2'; - const aggAndFieldIdentifier = 'Count(Event rate)'; - const jobId = 'job_from_lens_2'; + await ml.lensVisualizations.setJobId(jobId, layerIndex); - await dashboardPreparation(selectedPanelTitle); + await ml.lensVisualizations.clickCreateJob(layerIndex); + await ml.lensVisualizations.assertJobHasBeenCreated(layerIndex); - await ml.lensVisualizations.clickCreateMLJobMenuAction(); + await ml.lensVisualizations.clickViewResults(layerIndex); + + await ml.commonUI.waitForMlLoadingIndicatorToDisappear(); + + await ml.testExecution.logTestStep('Single metric page loaded'); + await ml.lensVisualizations.singleMetricViewerPageLoaded(); - await retrySwitchTab(1, 10); - tabsCount++; + await ml.testExecution.logTestStep('pre-fills the job selection'); + await ml.jobSelection.assertJobSelection([jobId]); - await createJobInWizard(jobId, undefined, aggAndFieldIdentifier); + await ml.api.deleteAnomalyDetectionJobES(jobId); }); - it('can create multi metric job from vis with multiple compatible layers and single incompatible layer', async () => { - const selectedPanelTitle = 'panel3'; - const aggAndFieldIdentifier = 'Mean(responsetime)'; - const jobId = 'job_from_lens_3'; - const numberOfCompatibleLayers = 2; - const numberOfIncompatibleLayers = 1; + it('can create multi metric job from vis with single layer', async () => { + const selectedPanelTitle = 'panel1'; + const jobId = 'job_from_lens_2'; + const numberOfCompatibleLayers = 1; + const layerIndex = 0; await dashboardPreparation(selectedPanelTitle); @@ -165,38 +103,22 @@ export default function ({ getService, getPageObject, getPageObjects }: FtrProvi await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); - await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); - - ml.lensVisualizations.clickCreateJobFromLayer(1); - - await retrySwitchTab(1, 10); - tabsCount++; + await ml.lensVisualizations.setJobId(jobId, layerIndex); - await createJobInWizard(jobId, undefined, aggAndFieldIdentifier); - }); - - it('shows flyout for job from vis with no compatible layers', async () => { - const selectedPanelTitle = 'panel4'; - const numberOfCompatibleLayers = 0; - const numberOfIncompatibleLayers = 1; + await ml.lensVisualizations.clickCreateJob(layerIndex); + await ml.lensVisualizations.assertJobHasBeenCreated(layerIndex); - await dashboardPreparation(selectedPanelTitle); + await ml.lensVisualizations.clickViewResults(layerIndex); - await ml.lensVisualizations.clickCreateMLJobMenuAction(); + await ml.commonUI.waitForMlLoadingIndicatorToDisappear(); - await ml.lensVisualizations.assertLensLayerSelectorExists(); + await ml.testExecution.logTestStep('Anomaly explorer page loaded'); + await ml.lensVisualizations.anomalyExplorerPageLoaded(); - await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); - - await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); - }); - - it('does not show link to ml with vis with only incompatible layer types', async () => { - const selectedPanelTitle = 'panel5'; - - await dashboardPreparation(selectedPanelTitle); + await ml.testExecution.logTestStep('pre-fills the job selection'); + await ml.jobSelection.assertJobSelection([jobId]); - ml.lensVisualizations.assertMLJobMenuActionDoesNotExist(); + await ml.api.deleteAnomalyDetectionJobES(jobId); }); }); } diff --git a/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml_with_wizard.ts b/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml_with_wizard.ts new file mode 100644 index 000000000000..9c70e92a0202 --- /dev/null +++ b/x-pack/test/functional/apps/ml/anomaly_detection/lens_to_ml_with_wizard.ts @@ -0,0 +1,222 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService, getPageObject, getPageObjects }: FtrProviderContext) { + const ml = getService('ml'); + const dashboardPanelActions = getService('dashboardPanelActions'); + const browser = getService('browser'); + const retry = getService('retry'); + const headerPage = getPageObject('header'); + const PageObjects = getPageObjects(['common', 'timePicker', 'dashboard']); + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + + const dashboardTitle = 'lens_to_ml'; + const dashboardArchive = + 'x-pack/test/functional/fixtures/kbn_archiver/ml/lens_to_ml_dashboard.json'; + + async function retrySwitchTab(tabIndex: number, seconds: number) { + await retry.tryForTime(seconds * 1000, async () => { + await browser.switchTab(tabIndex); + }); + await browser.setWindowSize(1920, 1080); + } + + async function setFarequoteTimerange() { + await PageObjects.timePicker.setAbsoluteRange( + 'Feb 7, 2016 @ 00:00:00.000', + 'Feb 11, 2016 @ 23:59:54.000' + ); + } + + async function dashboardPreparation(selectedPanelTitle: string) { + await PageObjects.dashboard.loadSavedDashboard(dashboardTitle); + await ml.dashboardEmbeddables.assertDashboardPanelExists(selectedPanelTitle); + + await setFarequoteTimerange(); + + const header = await dashboardPanelActions.getPanelHeading(selectedPanelTitle); + await dashboardPanelActions.openContextMenuMorePanel(header); + } + + async function createJobInWizard( + jobId: string, + splitField?: string, + aggAndFieldIdentifier?: string + ) { + await headerPage.waitUntilLoadingHasFinished(); + + if (splitField !== undefined) { + await ml.jobTypeSelection.assertMultiMetricJobWizardOpen(); + await ml.jobWizardMultiMetric.assertDetectorSplitExists(splitField); + await ml.jobWizardCommon.assertInfluencerSelection([splitField]); + } else if (aggAndFieldIdentifier !== undefined) { + await ml.jobTypeSelection.assertSingleMetricJobWizardOpen(); + await ml.jobWizardCommon.assertAggAndFieldInputExists(); + await ml.jobWizardCommon.selectAggAndField(aggAndFieldIdentifier, true); + await ml.jobWizardCommon.assertAnomalyChartExists('LINE'); + } + + await ml.testExecution.logTestStep('job creation displays the job details step'); + await ml.jobWizardCommon.advanceToJobDetailsSection(); + + await ml.testExecution.logTestStep('job creation inputs the job id'); + await ml.jobWizardCommon.assertJobIdInputExists(); + await ml.jobWizardCommon.setJobId(jobId); + + await ml.testExecution.logTestStep('job creation displays the validation step'); + await ml.jobWizardCommon.advanceToValidationSection(); + + await ml.testExecution.logTestStep('job creation displays the summary step'); + await ml.jobWizardCommon.advanceToSummarySection(); + + await ml.testExecution.logTestStep('job creation creates the job and finishes processing'); + await ml.jobWizardCommon.assertCreateJobButtonExists(); + await ml.jobWizardCommon.createJobAndWaitForCompletion(); + + await ml.testExecution.logTestStep('job creation displays the created job in the job list'); + await ml.navigation.navigateToMl(); + await ml.navigation.navigateToJobManagement(); + + await ml.jobTable.filterWithSearchString(jobId, 1); + + await ml.jobTable.assertJobRowJobId(jobId); + } + + describe('create jobs from lens with wizard', function () { + this.tags(['ml']); + + before(async () => { + await ml.testResources.setKibanaTimeZoneToUTC(); + await ml.securityUI.loginAsMlPowerUser(); + + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); + await kibanaServer.importExport.load(dashboardArchive); + await browser.setWindowSize(1920, 1080); + }); + + after(async () => { + await ml.api.cleanMlIndices(); + await kibanaServer.importExport.unload(dashboardArchive); + }); + + beforeEach(async () => { + await PageObjects.common.navigateToApp('dashboard'); + }); + + let tabsCount = 1; + + afterEach(async () => { + if (tabsCount > 1) { + await browser.closeCurrentWindow(); + await retrySwitchTab(0, 10); + tabsCount--; + } + }); + + it('can create multi metric job from vis with single layer', async () => { + const selectedPanelTitle = 'panel1'; + const jobId = 'job_from_lens_1'; + const splitField = 'airline'; + const numberOfCompatibleLayers = 1; + const numberOfIncompatibleLayers = 0; + + await dashboardPreparation(selectedPanelTitle); + + await ml.lensVisualizations.clickCreateMLJobMenuAction(); + + await ml.lensVisualizations.assertLensLayerSelectorExists(); + + await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); + + await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); + + ml.lensVisualizations.clickCreateJobFromLayerWithWizard(0); + + await retrySwitchTab(1, 10); + tabsCount++; + + await createJobInWizard(jobId, splitField, undefined); + }); + + it('can create single metric job from vis with single layer', async () => { + const selectedPanelTitle = 'panel2'; + const aggAndFieldIdentifier = 'Count(Event rate)'; + const jobId = 'job_from_lens_2'; + const numberOfCompatibleLayers = 1; + const numberOfIncompatibleLayers = 0; + + await dashboardPreparation(selectedPanelTitle); + + await ml.lensVisualizations.clickCreateMLJobMenuAction(); + + await ml.lensVisualizations.assertLensLayerSelectorExists(); + + await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); + + await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); + + ml.lensVisualizations.clickCreateJobFromLayerWithWizard(0); + + await retrySwitchTab(1, 10); + tabsCount++; + + await createJobInWizard(jobId, undefined, aggAndFieldIdentifier); + }); + + it('can create multi metric job from vis with multiple compatible layers and single incompatible layer', async () => { + const selectedPanelTitle = 'panel3'; + const aggAndFieldIdentifier = 'Mean(responsetime)'; + const jobId = 'job_from_lens_3'; + const numberOfCompatibleLayers = 2; + const numberOfIncompatibleLayers = 1; + + await dashboardPreparation(selectedPanelTitle); + + await ml.lensVisualizations.clickCreateMLJobMenuAction(); + + await ml.lensVisualizations.assertLensLayerSelectorExists(); + + await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); + + await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); + + ml.lensVisualizations.clickCreateJobFromLayerWithWizard(1); + + await retrySwitchTab(1, 10); + tabsCount++; + + await createJobInWizard(jobId, undefined, aggAndFieldIdentifier); + }); + + it('shows flyout for job from vis with no compatible layers', async () => { + const selectedPanelTitle = 'panel4'; + const numberOfCompatibleLayers = 0; + const numberOfIncompatibleLayers = 1; + + await dashboardPreparation(selectedPanelTitle); + + await ml.lensVisualizations.clickCreateMLJobMenuAction(); + + await ml.lensVisualizations.assertLensLayerSelectorExists(); + + await ml.lensVisualizations.assertNumberOfCompatibleLensLayers(numberOfCompatibleLayers); + + await ml.lensVisualizations.assertNumberOfIncompatibleLensLayers(numberOfIncompatibleLayers); + }); + + it('does not show link to ml with vis with only incompatible layer types', async () => { + const selectedPanelTitle = 'panel5'; + + await dashboardPreparation(selectedPanelTitle); + + ml.lensVisualizations.assertMLJobMenuActionDoesNotExist(); + }); + }); +} diff --git a/x-pack/test/functional/services/ml/index.ts b/x-pack/test/functional/services/ml/index.ts index 92898efe4b56..09246da860b5 100644 --- a/x-pack/test/functional/services/ml/index.ts +++ b/x-pack/test/functional/services/ml/index.ts @@ -111,7 +111,7 @@ export function MachineLearningProvider(context: FtrProviderContext) { const jobWizardCommon = MachineLearningJobWizardCommonProvider(context, commonUI, customUrls); const jobWizardMultiMetric = MachineLearningJobWizardMultiMetricProvider(context); const jobWizardPopulation = MachineLearningJobWizardPopulationProvider(context); - const lensVisualizations = MachineLearningLensVisualizationsProvider(context); + const lensVisualizations = MachineLearningLensVisualizationsProvider(context, commonUI); const navigation = MachineLearningNavigationProvider(context); const overviewPage = MachineLearningOverviewPageProvider(context); const securityCommon = MachineLearningSecurityCommonProvider(context); diff --git a/x-pack/test/functional/services/ml/lens_visualizations.ts b/x-pack/test/functional/services/ml/lens_visualizations.ts index 3c05ec234a3c..1c8a4410f57a 100644 --- a/x-pack/test/functional/services/ml/lens_visualizations.ts +++ b/x-pack/test/functional/services/ml/lens_visualizations.ts @@ -7,16 +7,23 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; +import { MlCommonUI } from './common_ui'; -export function MachineLearningLensVisualizationsProvider({ getService }: FtrProviderContext) { +export function MachineLearningLensVisualizationsProvider( + { getService }: FtrProviderContext, + mlCommonUI: MlCommonUI +) { const testSubjects = getService('testSubjects'); return { async clickCreateMLJobMenuAction() { await testSubjects.click('embeddablePanelAction-create-ml-ad-job-action'); }, - async clickCreateJobFromLayer(layerIndex: number) { - await testSubjects.click(`mlLensLayerCompatibleButton_${layerIndex}`); + async clickCreateJob(layerIndex: number) { + await testSubjects.clickWhenNotDisabled(`mlLensLayerCreateJobButton_${layerIndex}`); + }, + async clickCreateJobFromLayerWithWizard(layerIndex: number) { + await testSubjects.click(`mlLensLayerCreateWithWizardButton_${layerIndex}`); }, async assertLensLayerSelectorExists() { await testSubjects.existOrFail('mlFlyoutLensLayerSelector'); @@ -38,5 +45,37 @@ export function MachineLearningLensVisualizationsProvider({ getService }: FtrPro `Expected number of compatible layers to be ${numberOfIncompatibleLayers} (got '${incompatibleLayers.length}')` ); }, + async assertJobIdValue(expectedValue: string, layerIndex: number) { + const actualJobId = await testSubjects.getAttribute( + `mlLensLayerJobIdInput_${layerIndex}`, + 'value' + ); + expect(actualJobId).to.eql( + expectedValue, + `Expected job id value to be '${expectedValue}' (got '${actualJobId}')` + ); + }, + + async setJobId(jobId: string, layerIndex: number) { + await mlCommonUI.setValueWithChecks(`mlLensLayerJobIdInput_${layerIndex}`, jobId, { + clearWithKeyboard: true, + }); + await this.assertJobIdValue(jobId, layerIndex); + }, + + async assertJobHasBeenCreated(layerIndex: number) { + await testSubjects.existOrFail(`mlLensLayerCompatible.jobCreated.success_${layerIndex}`, { + timeout: 60 * 1000, + }); + }, + async clickViewResults(layerIndex: number) { + await testSubjects.click(`mlLensLayerResultsButton_${layerIndex}`); + }, + async singleMetricViewerPageLoaded() { + await testSubjects.existOrFail('~mlPageSingleMetricViewer'); + }, + async anomalyExplorerPageLoaded() { + await testSubjects.existOrFail('~mlPageAnomalyExplorer'); + }, }; } From 7b5819c940fbe9111dc3abf3baafaca4a2d30c68 Mon Sep 17 00:00:00 2001 From: Tre Date: Fri, 26 Aug 2022 09:23:49 +0100 Subject: [PATCH 23/50] [Archive Migrations] x-pack dashboard/session_in_spaces (#136531) * [Archive Migrations] x-pack dashboard/session_in_spaces Replaces the old es archive with kbn archive. Change test to use new archive. Helps with: https://github.com/elastic/kibana/issues/102552 * fix deleting sessions * improve Co-authored-by: Anton Dosov --- scripts/archive_migration_functions.sh | 129 ++++--- .../dashboard/session_in_space/data.json | 328 ------------------ .../dashboard/session_in_space/mappings.json | 205 ----------- .../dashboard/session_in_another_space.json | 77 ++++ .../dashboard/session_in_space.json | 255 ++++++++++++++ .../functional/services/search_sessions.ts | 20 +- .../apps/dashboard/async_search/index.ts | 1 + .../async_search/sessions_in_space.ts | 159 +++------ .../apps/dashboard/session_sharing/index.ts | 5 + .../tests/apps/discover/sessions_in_space.ts | 160 ++++----- .../tests/apps/lens/index.ts | 6 + .../apps/management/search_sessions/index.ts | 2 + .../search_sessions/sessions_management.ts | 1 + 13 files changed, 563 insertions(+), 785 deletions(-) delete mode 100644 x-pack/test/functional/es_archives/dashboard/session_in_space/data.json delete mode 100644 x-pack/test/functional/es_archives/dashboard/session_in_space/mappings.json create mode 100644 x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space.json create mode 100644 x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space.json diff --git a/scripts/archive_migration_functions.sh b/scripts/archive_migration_functions.sh index 391a7d766e81..be8300ec022a 100644 --- a/scripts/archive_migration_functions.sh +++ b/scripts/archive_migration_functions.sh @@ -2,11 +2,76 @@ standard_list="url,index-pattern,query,graph-workspace,tag,visualization,canvas-element,canvas-workpad,dashboard,search,lens,map,cases,uptime-dynamic-settings,osquery-saved-query,osquery-pack,infrastructure-ui-source,metrics-explorer-view,inventory-view,infrastructure-monitoring-log-view,apm-indices" -orig_archive="x-pack/test/functional/es_archives/reporting/ecommerce_kibana_spaces" -new_archive="x-pack/test/functional/fixtures/kbn_archiver/reporting/ecommerce_kibana_spaces" -newArchives=("x-pack/test/functional/fixtures/kbn_archiver/reporting/ecommerce_kibana_non_default_space") -newArchives+=("x-pack/test/functional/fixtures/kbn_archiver/reporting/ecommerce_kibana_non_timezone_space") -test_config="x-pack/test/reporting_api_integration/reporting_and_security.config.ts" +orig_archive="x-pack/test/functional/es_archives/dashboard/session_in_space" +new_archive="x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space" +newArchives=("x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space") +newArchives+=("x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space") +test_config="x-pack/test/search_sessions_integration/config.ts" + +curl_so_count() { + local so=${1:-search-session} + local count + count=$(curl -s -XGET "http://elastic:changeme@localhost:9220/.kibana/_count" -H "kbn-xsrf: archive-migration-functions" -H "Content-Type: application/json" -d' +{ + "query": { + "bool": { + "should": [ + { + "match_phrase": { + "type": "${so}" + } + } + ] + } + } +}' | jq '.count') + + echo " ### [${so}] count: ${count}" +} + +watch_so_count() { + local so=${1:-search-session} + + while true; do + curl_so_count "$so" + sleep 1 + done +} + +create_space() { + # Ex: Id, Name, and Disabled Features. + # create_space tre "Tre Space" apm,ml,canvas,dashboard,visualize,maps,monitoring,uptime + # Ex: Id. Name is generated + # create_space rashmi + # Ex: Id and Name. No disabled features. + # create_space another-space "Another Space" + local id=${1:-sales} + local upperCased + upperCased=$(echo "${id:0:1}" | tr '[:lower:]' '[:upper:]')"${id:1}" + local name=${2:-$upperCased} + local disabledFeatures=${3:-} + + if [[ -n $3 ]]; then + disabledFeatures="$3" + fi + + # Use jq to create the i and n variables, then inject them. + local payload + payload=$(jq -n --arg i "$id" --arg n "$name" --arg df "$disabledFeatures" \ + '{ "id": $i, "name": $n, "disabledFeatures": [$df] }') + + curl -H "Content-Type: application/json" -H "kbn-xsrf: archive-migration-functions" \ + -X POST -d "$payload" \ + --user elastic:changeme http://localhost:5620/api/spaces/space +} + +delete_space() { + local id=${1:?Need a space id.} + + curl -H "kbn-xsrf: archive-migration-functions" \ + -X DELETE \ + --user elastic:changeme http://localhost:5620/api/spaces/space/"$id" +} arrayify_csv() { local xs=${1} @@ -31,11 +96,6 @@ intersection() { echo "${intersections[@]}" } -# Just a note that this is using Gnu date. -# On OSX if you don't install this, and instead use the native date you only get seconds. -# With gdate you can something like nanoseconds. -alias timestamp='while read line; do echo "[`gdate +%H:%M:%S.%N`] $line"; done' - is_zipped() { local archive=$1 @@ -98,6 +158,7 @@ _find_config() { local current local parent + local grandParent local greatGrand current=$(dirname "$test_file") parent=$(dirname "$current") @@ -107,8 +168,9 @@ _find_config() { local dirs=("$current" "$parent" "$grandParent" "$greatGrand") local configs=() + local config for x in "${dirs[@]}"; do - local config=$(find "$x" -maxdepth 1 -type f -name '*config.js' -or -name '*config.ts') + config=$(find "$x" -maxdepth 1 -type f -name '*config.js' -or -name '*config.ts') if [ -n "$config" ]; then configs+=("$config") fi @@ -277,42 +339,29 @@ save_kbn() { load_kbn() { local space=${1:-default} + local archive=${2:-${new_archive}} set -x - node scripts/kbn_archiver.js --config "$test_config" load "$new_archive" --space "$space" - set +x -} - -load_kbns() { - local space=${1:-default} - - for x in "${newArchives[@]}"; do - set -x - node scripts/kbn_archiver.js --config "$test_config" load "$x" --space "$space" - set +x - done -} - -load_created_kbn_archive() { - set -x - node scripts/kbn_archiver.js --config "$test_config" load "$new_archive" + node scripts/kbn_archiver.js --config "$test_config" load "$archive" --space "$space" set +x } unload_kbn() { + local archive=${1:-${new_archive}} set -x - node scripts/kbn_archiver.js --config "$test_config" unload "$new_archive" + node scripts/kbn_archiver.js --config "$test_config" unload "$archive" set +x } -unload_kbns() { - local space=${1:-default} +load_kbn_custom() { + load_kbn default "${newArchives[1]}" + create_space another-space "Another Space" + load_kbn another-space "${newArchives[2]}" +} - for x in "${newArchives[@]}"; do - set -x - node scripts/kbn_archiver.js --config "$test_config" unload "$x" - set +x - done +unload_kbn_custom() { + unload_kbn "${newArchives[1]}" + delete_space another-space } ping_server() { @@ -338,14 +387,6 @@ run_test() { set +x } -run_test_with_timestamp() { - local config=${1:-$test_config} - - set -x - node scripts/functional_test_runner --config "$config" | timestamp - set +x -} - run_test_extra() { set -x node scripts/functional_test_runner --config "$test_config" \ diff --git a/x-pack/test/functional/es_archives/dashboard/session_in_space/data.json b/x-pack/test/functional/es_archives/dashboard/session_in_space/data.json deleted file mode 100644 index 64756843245a..000000000000 --- a/x-pack/test/functional/es_archives/dashboard/session_in_space/data.json +++ /dev/null @@ -1,328 +0,0 @@ -{ - "type": "doc", - "value": { - "id": "space:default", - "index": ".kibana", - "source": { - "space": { - "description": "This is the default space!", - "name": "Default" - }, - "type": "space" - } - } -} - -{ - "type": "doc", - "value": { - "id": "space:another-space", - "index": ".kibana", - "source": { - "space": { - "description": "This is another space", - "name": "Another Space" - }, - "type": "space" - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:6c9f3830-01e3-11eb-9b63-176d7b28a352", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Sum of Bytes by Extension (Delayed 5s)", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"Sum of Bytes by Extension (Delayed 5s)\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"shard_delay\",\"params\":{\"delay\":\"5s\"},\"schema\":\"group\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:14501a50-01e3-11eb-9b63-176d7b28a352", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Sum of Bytes by Extension", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"Sum of Bytes by Extension\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:50a67010-075d-11eb-be70-0bd5e8b57d02", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Sum of Bytes by Extension (Delayed 15s)", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"Sum of Bytes by Extension (Delayed 15s)\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"shard_delay\",\"params\":{\"delay\":\"15s\"},\"schema\":\"group\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "index-pattern:logstash-*", - "index": ".kibana", - "source": { - "index-pattern": { - "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", - "timeFieldName": "@timestamp", - "title": "logstash-*" - }, - "type": "index-pattern" - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:24f3f950-69d9-11ea-a14d-e341629a29e6", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"7.10.0\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f8f7f5b5-b840-443c-a766-d22a8a87c493\"},\"panelIndex\":\"f8f7f5b5-b840-443c-a766-d22a8a87c493\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title" : "Delayed 5s", - "version": 1 - }, - "references": [ - { - "name" : "panel_0", - "type" : "visualization", - "id" : "6c9f3830-01e3-11eb-9b63-176d7b28a352" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:41e77910-69d9-11ea-a14d-e341629a29e6", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"7.7.0\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"},\"panelIndex\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title": "Not Delayed", - "version": 1 - }, - "references": [ - { - "name" : "panel_0", - "type" : "visualization", - "id" : "14501a50-01e3-11eb-9b63-176d7b28a352" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:a41c6790-075d-11eb-be70-0bd5e8b57d02", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"7.7.0\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"eedeb943-5cfc-4e2c-bc1a-10ce06345cc1\"},\"panelIndex\":\"eedeb943-5cfc-4e2c-bc1a-10ce06345cc1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title": "Delayed 15s", - "version": 1 - }, - "references": [ - { - "name" : "panel_0", - "type" : "visualization", - "id" : "50a67010-075d-11eb-be70-0bd5e8b57d02" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:a41c6790-075d-11eb-be70-0bd5e8b57d03", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"8.0.0\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ec585931-ce8e-43fd-aa94-a1a9612d24ba\"},\"panelIndex\":\"ec585931-ce8e-43fd-aa94-a1a9612d24ba\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"8.0.0\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c7b18010-462b-4e55-a974-fdec2ae64b06\"},\"panelIndex\":\"c7b18010-462b-4e55-a974-fdec2ae64b06\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"8.0.0\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"e67704f7-20b7-4ade-8dee-972a9d187107\"},\"panelIndex\":\"e67704f7-20b7-4ade-8dee-972a9d187107\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"8.0.0\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"f0b03592-10f1-41cd-9929-0cb4163bcd16\"},\"panelIndex\":\"f0b03592-10f1-41cd-9929-0cb4163bcd16\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title": "Multiple delayed", - "version": 1 - }, - "references": [ - { - "id": "14501a50-01e3-11eb-9b63-176d7b28a352", - "name": "panel_0", - "type": "visualization" - }, - { - "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", - "name": "panel_1", - "type": "visualization" - }, - { - "id": "6c9f3830-01e3-11eb-9b63-176d7b28a352", - "name": "panel_2", - "type": "visualization" - }, - { - "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", - "name": "panel_3", - "type": "visualization" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "type": "doc", - "id": "another-space: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", - "namespace": "another-space", - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "type": "doc", - "id": "another-space:visualization:75c3e060-1e7c-11e9-8488-65449e65d0ed", - "source": { - "visualization": { - "title": "A Pie in another space", - "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\":[]}" - } - }, - "namespace": "another-space", - "type": "visualization", - "updated_at": "2019-01-22T19:32:31.206Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "type": "doc", - "id": "another-space:dashboard:my-dashboard", - "source": { - "dashboard": { - "title": "A Dashboard in another space", - "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\":[]}" - } - }, - "namespace": "another-space", - "type": "dashboard", - "updated_at": "2019-01-22T19:32:47.232Z" - } - } -} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/dashboard/session_in_space/mappings.json b/x-pack/test/functional/es_archives/dashboard/session_in_space/mappings.json deleted file mode 100644 index 8382a490ac23..000000000000 --- a/x-pack/test/functional/es_archives/dashboard/session_in_space/mappings.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": {} - }, - "index": ".kibana_1", - "mappings": { - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - } - } - }, - "dashboard": { - "dynamic": "strict", - "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" - } - } - }, - "index-pattern": { - "dynamic": "strict", - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "dynamic": "strict", - "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": { - "dynamic": "strict", - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "type": { - "type": "keyword" - }, - "url": { - "dynamic": "strict", - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "number_of_replicas": "1", - "number_of_shards": "1" - } - } - } -} diff --git a/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space.json b/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space.json new file mode 100644 index 000000000000..04475287bd8a --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space.json @@ -0,0 +1,77 @@ +{ + "attributes": { + "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}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.4.0", + "id": "d1bd6c84-d9d0-56fb-8a72-63fe60020920", + "migrationVersion": { + "index-pattern": "8.0.0" + }, + "originId": "logstash-*", + "references": [], + "type": "index-pattern", + "updated_at": "2018-12-21T00:43:07.096Z", + "version": "WzI2LDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "A Pie in another space", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"A Pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":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\"}},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"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\"}}]}" + }, + "coreMigrationVersion": "8.4.0", + "id": "73f456f1-e0df-570b-82c1-0ff40e1321b9", + "migrationVersion": { + "visualization": "8.3.0" + }, + "originId": "75c3e060-1e7c-11e9-8488-65449e65d0ed", + "references": [ + { + "id": "d1bd6c84-d9d0-56fb-8a72-63fe60020920", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-01-22T19:32:31.206Z", + "version": "WzI4LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"}]", + "timeRestore": false, + "title": "A Dashboard in another space", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "09c616b0-b819-5f6e-b1a0-8c2d73a28e5e", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "originId": "my-dashboard", + "references": [ + { + "id": "73f456f1-e0df-570b-82c1-0ff40e1321b9", + "name": "1:panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2019-01-22T19:32:47.232Z", + "version": "WzMwLDJd" +} \ No newline at end of file diff --git a/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space.json b/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space.json new file mode 100644 index 000000000000..718d45e98302 --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space.json @@ -0,0 +1,255 @@ +{ + "attributes": { + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.4.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "8.0.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzIxLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Sum of Bytes by Extension", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Sum of Bytes by Extension\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"legendSize\":\"auto\"}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "14501a50-01e3-11eb-9b63-176d7b28a352", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE5LDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Sum of Bytes by Extension (Delayed 5s)", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Sum of Bytes by Extension (Delayed 5s)\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"shard_delay\",\"params\":{\"delay\":\"5s\"},\"schema\":\"group\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"legendSize\":\"auto\"}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "6c9f3830-01e3-11eb-9b63-176d7b28a352", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE4LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.10.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"f8f7f5b5-b840-443c-a766-d22a8a87c493\"},\"panelIndex\":\"f8f7f5b5-b840-443c-a766-d22a8a87c493\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f8f7f5b5-b840-443c-a766-d22a8a87c493\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Delayed 5s", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "24f3f950-69d9-11ea-a14d-e341629a29e6", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "6c9f3830-01e3-11eb-9b63-176d7b28a352", + "name": "f8f7f5b5-b840-443c-a766-d22a8a87c493:panel_f8f7f5b5-b840-443c-a766-d22a8a87c493", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzIyLDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.7.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"},\"panelIndex\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Not Delayed", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "41e77910-69d9-11ea-a14d-e341629a29e6", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "14501a50-01e3-11eb-9b63-176d7b28a352", + "name": "8c5df6b2-0cc9-4887-a2d9-6a9a192f3407:panel_8c5df6b2-0cc9-4887-a2d9-6a9a192f3407", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzIzLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Sum of Bytes by Extension (Delayed 15s)", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Sum of Bytes by Extension (Delayed 15s)\",\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"params\":{\"field\":\"bytes\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"extension.raw\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"shard_delay\",\"params\":{\"delay\":\"15s\"},\"schema\":\"group\"}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Sum of bytes\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Sum of bytes\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"row\":true,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"legendSize\":\"auto\"}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzIwLDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.7.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"eedeb943-5cfc-4e2c-bc1a-10ce06345cc1\"},\"panelIndex\":\"eedeb943-5cfc-4e2c-bc1a-10ce06345cc1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_eedeb943-5cfc-4e2c-bc1a-10ce06345cc1\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Delayed 15s", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "a41c6790-075d-11eb-be70-0bd5e8b57d02", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", + "name": "eedeb943-5cfc-4e2c-bc1a-10ce06345cc1:panel_eedeb943-5cfc-4e2c-bc1a-10ce06345cc1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzI0LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.0.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ec585931-ce8e-43fd-aa94-a1a9612d24ba\"},\"panelIndex\":\"ec585931-ce8e-43fd-aa94-a1a9612d24ba\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ec585931-ce8e-43fd-aa94-a1a9612d24ba\"},{\"version\":\"8.0.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"c7b18010-462b-4e55-a974-fdec2ae64b06\"},\"panelIndex\":\"c7b18010-462b-4e55-a974-fdec2ae64b06\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_c7b18010-462b-4e55-a974-fdec2ae64b06\"},{\"version\":\"8.0.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"e67704f7-20b7-4ade-8dee-972a9d187107\"},\"panelIndex\":\"e67704f7-20b7-4ade-8dee-972a9d187107\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e67704f7-20b7-4ade-8dee-972a9d187107\"},{\"version\":\"8.0.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"f0b03592-10f1-41cd-9929-0cb4163bcd16\"},\"panelIndex\":\"f0b03592-10f1-41cd-9929-0cb4163bcd16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_f0b03592-10f1-41cd-9929-0cb4163bcd16\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Multiple delayed", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "a41c6790-075d-11eb-be70-0bd5e8b57d03", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "14501a50-01e3-11eb-9b63-176d7b28a352", + "name": "ec585931-ce8e-43fd-aa94-a1a9612d24ba:panel_ec585931-ce8e-43fd-aa94-a1a9612d24ba", + "type": "visualization" + }, + { + "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", + "name": "c7b18010-462b-4e55-a974-fdec2ae64b06:panel_c7b18010-462b-4e55-a974-fdec2ae64b06", + "type": "visualization" + }, + { + "id": "6c9f3830-01e3-11eb-9b63-176d7b28a352", + "name": "e67704f7-20b7-4ade-8dee-972a9d187107:panel_e67704f7-20b7-4ade-8dee-972a9d187107", + "type": "visualization" + }, + { + "id": "50a67010-075d-11eb-be70-0bd5e8b57d02", + "name": "f0b03592-10f1-41cd-9929-0cb4163bcd16:panel_f0b03592-10f1-41cd-9929-0cb4163bcd16", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzI1LDJd" +} \ No newline at end of file diff --git a/x-pack/test/functional/services/search_sessions.ts b/x-pack/test/functional/services/search_sessions.ts index a3d04af530d5..0b9ec73080e8 100644 --- a/x-pack/test/functional/services/search_sessions.ts +++ b/x-pack/test/functional/services/search_sessions.ts @@ -30,7 +30,7 @@ export class SearchSessionsService extends FtrService { private readonly log = this.ctx.getService('log'); private readonly retry = this.ctx.getService('retry'); private readonly browser = this.ctx.getService('browser'); - private readonly supertest = this.ctx.getService('supertest'); + private readonly security = this.ctx.getService('security'); public async find(): Promise { return this.testSubjects.find(SEARCH_SESSION_INDICATOR_TEST_SUBJ); @@ -138,21 +138,31 @@ export class SearchSessionsService extends FtrService { this.log.debug('Deleting created search sessions'); // ignores 409 errs and keeps retrying await this.retry.tryForTime(10000, async () => { - const { body } = await this.supertest + const { body } = await this.security.testUserSupertest .post('/internal/session/_find') .set('kbn-xsrf', 'anything') .set('kbn-system-request', 'true') - .send({ page: 1, perPage: 10000, sortField: 'created', sortOrder: 'asc' }) + .send({ + page: 1, + perPage: 10000, + sortField: 'created', + sortOrder: 'asc', + }) .expect(200); const { saved_objects: savedObjects } = body as SavedObjectsFindResponse; - if (savedObjects.length) { + + if (savedObjects.length > 0) { this.log.debug(`Found created search sessions: ${savedObjects.map(({ id }) => id)}`); + } else { + this.log.debug(`Found no search sessions to delete`); + return; } + await Promise.all( savedObjects.map(async (so) => { this.log.debug(`Deleting search session: ${so.id}`); - await this.supertest + await this.security.testUserSupertest .delete(`/internal/session/${so.id}`) .set(`kbn-xsrf`, `anything`) .expect(200); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts index 77dc12bfec03..1eb5f3d8e17b 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/index.ts @@ -31,6 +31,7 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid after(async () => { await kibanaServer.savedObjects.cleanStandardList(); + await searchSessions.deleteAllSearchSessions(); }); loadTestFile(require.resolve('./async_search')); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts index d1a36e5a3378..e7cefd782f9a 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts @@ -10,7 +10,7 @@ import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); - const esArchiver = getService('esArchiver'); + const spacesService = getService('spaces'); const security = getService('security'); const PageObjects = getPageObjects([ 'common', @@ -28,57 +28,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const toasts = getService('toasts'); describe('dashboard in space', () => { + afterEach(async () => await clean()); describe('Storing search sessions in space', () => { - before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/session_in_space'); - - await kibanaServer.uiSettings.replace( - { - 'timepicker:timeDefaults': - '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', - defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', - }, - { space: 'another-space' } - ); - - await security.role.create('data_analyst', { - elasticsearch: { - indices: [{ names: ['logstash-*'], privileges: ['all'] }], - }, - kibana: [ - { - feature: { - dashboard: ['minimal_read', 'store_search_session'], - }, - spaces: ['another-space'], - }, - ], - }); - - await security.user.create('analyst', { - password: 'analyst-password', - roles: ['data_analyst'], - full_name: 'test user', - }); - - await PageObjects.security.forceLogout(); - - await PageObjects.security.login('analyst', 'analyst-password', { - expectSpaceSelector: false, - }); - }); - - after(async () => { - // NOTE: Logout needs to happen before anything else to avoid flaky behavior - await PageObjects.security.forceLogout(); - - await security.role.delete('data_analyst'); - await security.user.delete('analyst'); - - await kibanaServer.uiSettings.unset('timepicker:timeDefaults', { space: 'another-space' }); - await kibanaServer.uiSettings.unset('defaultIndex', { space: 'another-space' }); - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/session_in_space'); - }); + before(async () => await load(['minimal_read', 'store_search_session'])); it('Saves and restores a session', async () => { await PageObjects.common.navigateToApp('dashboard', { basePath: 's/another-space' }); @@ -119,58 +71,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings }); }); - describe('Disabled storing search sessions', () => { - before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/session_in_space'); - - await kibanaServer.uiSettings.replace( - { - 'timepicker:timeDefaults': - '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', - defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', - }, - { space: 'another-space' } - ); - - await security.role.create('data_analyst', { - elasticsearch: { - indices: [{ names: ['logstash-*'], privileges: ['all'] }], - }, - kibana: [ - { - feature: { - dashboard: ['minimal_read'], - }, - spaces: ['another-space'], - }, - ], - }); - - await security.user.create('analyst', { - password: 'analyst-password', - roles: ['data_analyst'], - full_name: 'test user', - }); - - await PageObjects.security.forceLogout(); - - await PageObjects.security.login('analyst', 'analyst-password', { - expectSpaceSelector: false, - }); - }); - - after(async () => { - // NOTE: Logout needs to happen before anything else to avoid flaky behavior - await PageObjects.security.forceLogout(); - - await security.role.delete('data_analyst'); - await security.user.delete('analyst'); - - await kibanaServer.uiSettings.unset('timepicker:timeDefaults', { space: 'another-space' }); - await kibanaServer.uiSettings.unset('defaultIndex', { space: 'another-space' }); - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/session_in_space'); - }); + before(async () => await load(['minimal_read'])); it("Doesn't allow to store a session", async () => { await PageObjects.common.navigateToApp('dashboard', { basePath: 's/another-space' }); @@ -183,4 +85,57 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); }); + async function load(dashboard: string[]) { + await kibanaServer.importExport.load( + `x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space` + ); + await spacesService.create({ id: 'another-space', name: 'Another Space' }); + await kibanaServer.importExport.load( + `x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space`, + { space: 'another-space' } + ); + await kibanaServer.uiSettings.replace( + { + 'timepicker:timeDefaults': + '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', + defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', + }, + { space: 'another-space' } + ); + + await security.role.create('data_analyst', { + elasticsearch: { + indices: [{ names: ['logstash-*'], privileges: ['all'] }], + }, + kibana: [ + { + feature: { + dashboard, + }, + spaces: ['another-space'], + }, + ], + }); + + await security.user.create('analyst', { + password: 'analyst-password', + roles: ['data_analyst'], + full_name: 'test user', + }); + + await PageObjects.security.forceLogout(); + + await PageObjects.security.login('analyst', 'analyst-password', { + expectSpaceSelector: false, + }); + } + async function clean() { + await kibanaServer.savedObjects.cleanStandardList(); + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await PageObjects.security.forceLogout(); + await security.role.delete('data_analyst'); + await security.user.delete('analyst'); + await spacesService.delete('another-space'); + await searchSessions.deleteAllSearchSessions(); + } } diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts index 1ff11eb98845..021842a53191 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/index.ts @@ -11,6 +11,7 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects(['common']); + const searchSessions = getService('searchSessions'); describe('Search session sharing', function () { before(async () => { @@ -19,6 +20,10 @@ export default function ({ loadTestFile, getService, getPageObjects }: FtrProvid await PageObjects.common.navigateToApp('dashboard'); }); + after(async () => { + await searchSessions.deleteAllSearchSessions(); + }); + loadTestFile(require.resolve('./lens')); }); } diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts index 922ecfc12dc4..ad1e2cae0487 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts @@ -10,7 +10,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); - const esArchiver = getService('esArchiver'); + const spacesService = getService('spaces'); const security = getService('security'); const inspector = getService('inspector'); const PageObjects = getPageObjects([ @@ -28,57 +28,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const toasts = getService('toasts'); describe('discover in space', () => { + afterEach(async () => await clean()); describe('Storing search sessions in space', () => { - before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/session_in_space'); - - await kibanaServer.uiSettings.replace( - { - 'timepicker:timeDefaults': - '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', - defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', - }, - { space: 'another-space' } - ); - - await security.role.create('data_analyst', { - elasticsearch: { - indices: [{ names: ['logstash-*'], privileges: ['all'] }], - }, - kibana: [ - { - feature: { - discover: ['all'], - }, - spaces: ['another-space'], - }, - ], - }); - - await security.user.create('analyst', { - password: 'analyst-password', - roles: ['data_analyst'], - full_name: 'test user', - }); - - await PageObjects.security.forceLogout(); - - await PageObjects.security.login('analyst', 'analyst-password', { - expectSpaceSelector: false, - }); - }); - - after(async () => { - // NOTE: Logout needs to happen before anything else to avoid flaky behavior - await PageObjects.security.forceLogout(); - - await security.role.delete('data_analyst'); - await security.user.delete('analyst'); - - await kibanaServer.uiSettings.unset('timepicker:timeDefaults', { space: 'another-space' }); - await kibanaServer.uiSettings.unset('defaultIndex', { space: 'another-space' }); - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/session_in_space'); - }); + before(async () => await load(['all'])); it('Saves and restores a session', async () => { await PageObjects.common.navigateToApp('discover', { basePath: 's/another-space' }); @@ -124,56 +76,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); describe('Disabled storing search sessions in space', () => { - before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/session_in_space'); - - await kibanaServer.uiSettings.replace( - { - 'timepicker:timeDefaults': - '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', - defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', - }, - { space: 'another-space' } - ); - - await security.role.create('data_analyst', { - elasticsearch: { - indices: [{ names: ['logstash-*'], privileges: ['all'] }], - }, - kibana: [ - { - feature: { - discover: ['read'], - }, - spaces: ['another-space'], - }, - ], - }); - - await security.user.create('analyst', { - password: 'analyst-password', - roles: ['data_analyst'], - full_name: 'test user', - }); - - await PageObjects.security.forceLogout(); - - await PageObjects.security.login('analyst', 'analyst-password', { - expectSpaceSelector: false, - }); - }); - - after(async () => { - // NOTE: Logout needs to happen before anything else to avoid flaky behavior - await PageObjects.security.forceLogout(); - - await security.role.delete('data_analyst'); - await security.user.delete('analyst'); - - await kibanaServer.uiSettings.unset('timepicker:timeDefaults', { space: 'another-space' }); - await kibanaServer.uiSettings.unset('defaultIndex', { space: 'another-space' }); - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/session_in_space'); - }); + before(async () => await load(['read'])); it("Doesn't allow to store a session", async () => { await PageObjects.common.navigateToApp('discover', { basePath: 's/another-space' }); @@ -192,4 +95,59 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); }); + async function load(discover: string[]) { + await kibanaServer.importExport.load( + `x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space` + ); + await spacesService.create({ id: 'another-space', name: 'Another Space' }); + await kibanaServer.importExport.load( + `x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_another_space`, + { space: 'another-space' } + ); + await kibanaServer.uiSettings.replace( + { + 'timepicker:timeDefaults': + '{ "from": "2015-09-01T00:00:00.000Z", "to": "2015-10-01T00:00:00.000Z"}', + defaultIndex: 'd1bd6c84-d9d0-56fb-8a72-63fe60020920', + }, + { space: 'another-space' } + ); + + await security.role.create('data_analyst', { + elasticsearch: { + indices: [{ names: ['logstash-*'], privileges: ['all'] }], + }, + kibana: [ + { + feature: { + discover, + }, + spaces: ['another-space'], + }, + ], + }); + + await security.user.create('analyst', { + password: 'analyst-password', + roles: ['data_analyst'], + full_name: 'test user', + }); + + await PageObjects.security.forceLogout(); + + await PageObjects.security.login('analyst', 'analyst-password', { + expectSpaceSelector: false, + }); + } + async function clean() { + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard/session_in_space' + ); + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await PageObjects.security.forceLogout(); + await security.role.delete('data_analyst'); + await security.user.delete('analyst'); + await spacesService.delete('another-space'); + await searchSessions.deleteAllSearchSessions(); + } } diff --git a/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts b/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts index 978c5bdec0df..647cff343220 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/lens/index.ts @@ -10,6 +10,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); + const searchSessions = getService('searchSessions'); describe('lens search sessions', function () { before(async () => { @@ -17,6 +18,11 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); }); + after(async () => { + await searchSessions.deleteAllSearchSessions(); + await kibanaServer.savedObjects.cleanStandardList(); + }); + loadTestFile(require.resolve('./search_sessions.ts')); }); } diff --git a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts index cae745c6431d..f1d9a66c73a3 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/index.ts @@ -10,6 +10,7 @@ import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); + const searchSessions = getService('searchSessions'); describe('search sessions management', function () { before(async () => { @@ -25,6 +26,7 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { after(async () => { await kibanaServer.savedObjects.cleanStandardList(); + await searchSessions.deleteAllSearchSessions(); }); loadTestFile(require.resolve('./sessions_management')); diff --git a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/sessions_management.ts b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/sessions_management.ts index 513a315bf148..f350700933aa 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/sessions_management.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/management/search_sessions/sessions_management.ts @@ -26,6 +26,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Search Sessions Management UI', () => { describe('New search sessions', () => { before(async () => { + await searchSessions.deleteAllSearchSessions(); await PageObjects.common.navigateToApp('dashboard'); log.debug('wait for dashboard landing page'); await retry.tryForTime(10000, async () => { From 0b0dd6bac7eec6698688eda854a4ab7cc03195f8 Mon Sep 17 00:00:00 2001 From: Cristina Amico Date: Fri, 26 Aug 2022 10:50:53 +0200 Subject: [PATCH 24/50] [Fleet] Improve search functionality in integrations searchbar (#139386) * [Fleet] Improve search functionality in integrations searchbar * Fix types * Add constant * Show name instead of id; bring changes to installed packages tab * Fix tests and stories * Fix storybook failure Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../integration/integrations_real.spec.ts | 5 ++- .../fleet/cypress/screens/integrations.ts | 1 + .../integrations/hooks/use_local_search.tsx | 6 +-- .../components/package_list_grid.stories.tsx | 43 ++++++++++++++----- .../epm/components/package_list_grid.tsx | 38 ++++++++++++++-- .../epm/screens/home/available_packages.tsx | 30 +++++++------ .../epm/screens/home/category_facets.tsx | 13 +++++- .../sections/epm/screens/home/index.tsx | 14 +++--- .../epm/screens/home/installed_packages.tsx | 32 +++++++------- 9 files changed, 126 insertions(+), 56 deletions(-) diff --git a/x-pack/plugins/fleet/cypress/integration/integrations_real.spec.ts b/x-pack/plugins/fleet/cypress/integration/integrations_real.spec.ts index cbd08b6e8f5d..1caa90ba1b78 100644 --- a/x-pack/plugins/fleet/cypress/integration/integrations_real.spec.ts +++ b/x-pack/plugins/fleet/cypress/integration/integrations_real.spec.ts @@ -23,6 +23,7 @@ import { POLICIES_TAB, SETTINGS_TAB, UPDATE_PACKAGE_BTN, + INTEGRATIONS_SEARCHBAR_INPUT, } from '../screens/integrations'; import { ADD_PACKAGE_POLICY_BTN } from '../screens/fleet'; import { cleanupAgentPolicies } from '../tasks/cleanup'; @@ -66,7 +67,7 @@ describe.skip('Add Integration - Real API', () => { navigateTo(INTEGRATIONS); cy.wait('@packages'); cy.get('.euiLoadingSpinner').should('not.exist'); - cy.get('input[placeholder="Search for integrations"]').type('Apache'); + cy.get(INTEGRATIONS_SEARCHBAR_INPUT).type('Apache'); cy.get(INTEGRATIONS_CARD).contains(integration).click(); addIntegration(); cy.getBySel(INTEGRATION_NAME_LINK).contains('apache-1'); @@ -104,7 +105,7 @@ describe.skip('Add Integration - Real API', () => { cy.getBySel(ADD_PACKAGE_POLICY_BTN).click(); cy.wait('@packages'); cy.get('.euiLoadingSpinner').should('not.exist'); - cy.get('input[placeholder="Search for integrations"]').type('Apache'); + cy.get(INTEGRATIONS_SEARCHBAR_INPUT).type('Apache'); cy.get(INTEGRATIONS_CARD).contains(integration).click(); addIntegration({ useExistingPolicy: true }); cy.get('.euiBasicTable-loading').should('not.exist'); diff --git a/x-pack/plugins/fleet/cypress/screens/integrations.ts b/x-pack/plugins/fleet/cypress/screens/integrations.ts index ed645d08d9b5..929e36d19123 100644 --- a/x-pack/plugins/fleet/cypress/screens/integrations.ts +++ b/x-pack/plugins/fleet/cypress/screens/integrations.ts @@ -26,3 +26,4 @@ export const UPDATE_PACKAGE_BTN = 'updatePackageBtn'; export const LATEST_VERSION = 'latestVersion'; export const PACKAGE_VERSION = 'packageVersionText'; +export const INTEGRATIONS_SEARCHBAR_INPUT = 'epmList.searchBar'; diff --git a/x-pack/plugins/fleet/public/applications/integrations/hooks/use_local_search.tsx b/x-pack/plugins/fleet/public/applications/integrations/hooks/use_local_search.tsx index 458c4d94f9cd..58d3a847d3ef 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/hooks/use_local_search.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/hooks/use_local_search.tsx @@ -5,20 +5,20 @@ * 2.0. */ -import { Search as LocalSearch, AllSubstringsIndexStrategy } from 'js-search'; +import { Search as LocalSearch, PrefixIndexStrategy } from 'js-search'; import { useEffect, useRef } from 'react'; import type { IntegrationCardItem } from '../../../../common/types/models'; export const searchIdField = 'id'; -export const fieldsToSearch = ['name', 'title', 'description']; +export const fieldsToSearch = ['name', 'title']; export function useLocalSearch(packageList: IntegrationCardItem[]) { const localSearchRef = useRef(new LocalSearch(searchIdField)); useEffect(() => { const localSearch = new LocalSearch(searchIdField); - localSearch.indexStrategy = new AllSubstringsIndexStrategy(); + localSearch.indexStrategy = new PrefixIndexStrategy(); fieldsToSearch.forEach((field) => localSearch.addIndex(field)); localSearch.addDocuments(packageList); localSearchRef.current = localSearch; diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.stories.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.stories.tsx index f43c18d16771..0e746d8ca819 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.stories.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.stories.tsx @@ -24,12 +24,31 @@ const args: Args = { isLoading: false, showMissingIntegrationMessage: false, }; +const categories = [ + { + title: 'Category One', + id: 'category_one', + count: 2, + }, + { + title: 'Category Two', + id: 'category_two', + count: 3, + }, + { + title: 'Web', + id: 'web', + count: 1, + }, +]; export const EmptyList = (props: Args) => ( ); @@ -46,8 +65,8 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', - categories: ['web'], + integration: 'integration', + categories: ['category_two'], }, { title: 'Package Two', @@ -58,8 +77,8 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', - categories: ['web'], + integration: 'integration', + categories: ['category_one'], }, { title: 'Package Three', @@ -70,7 +89,7 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', + integration: 'integration', categories: ['web'], }, { @@ -82,8 +101,8 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', - categories: ['web'], + integration: 'integration', + categories: ['category_one'], }, { title: 'Package Five', @@ -94,8 +113,8 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', - categories: ['web'], + integration: 'integration', + categories: ['category_two'], }, { title: 'Package Six', @@ -106,12 +125,14 @@ export const List = (props: Args) => ( version: '1.0.0', url: 'https://example.com', icons: [], - integration: 'integation', - categories: ['web'], + integration: 'integration', + categories: ['category_two'], }, ]} onSearchChange={action('onSearchChange')} setSelectedCategory={action('setSelectedCategory')} + categories={categories} + selectedCategory="" {...props} /> ); diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.tsx index 09e28e649b84..98efc91cfc34 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/package_list_grid.tsx @@ -7,6 +7,7 @@ import type { ReactNode, FunctionComponent } from 'react'; import React, { useCallback, useState, useRef, useEffect } from 'react'; + import { EuiFlexGrid, EuiFlexGroup, @@ -16,7 +17,9 @@ import { EuiTitle, EuiSearchBar, EuiText, + EuiBadge, } from '@elastic/eui'; + import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -26,6 +29,8 @@ import { useLocalSearch, searchIdField } from '../../../hooks'; import type { IntegrationCardItem } from '../../../../../../common/types/models'; +import type { ExtendedIntegrationCategory, CategoryFacet } from '../screens/home/category_facets'; + import { PackageCard } from './package_card'; export interface Props { @@ -35,7 +40,9 @@ export interface Props { list: IntegrationCardItem[]; featuredList?: JSX.Element | null; initialSearch?: string; + selectedCategory: ExtendedIntegrationCategory; setSelectedCategory: (category: string) => void; + categories: CategoryFacet[]; onSearchChange: (search: string) => void; showMissingIntegrationMessage?: boolean; callout?: JSX.Element | null; @@ -49,7 +56,9 @@ export const PackageListGrid: FunctionComponent = ({ list, initialSearch, onSearchChange, + selectedCategory, setSelectedCategory, + categories, showMissingIntegrationMessage = false, featuredList = null, callout, @@ -73,15 +82,15 @@ export const PackageListGrid: FunctionComponent = ({ }, [windowScrollY, isSticky]); const onQueryChange = ({ - queryText: userInput, + queryText, error, }: { queryText: string; error: { message: string } | null; }) => { if (!error) { - onSearchChange(userInput); - setSearchTerm(userInput); + onSearchChange(queryText); + setSearchTerm(queryText); } }; @@ -89,6 +98,10 @@ export const PackageListGrid: FunctionComponent = ({ setSearchTerm(''); }; + const selectedCategoryTitle = selectedCategory + ? categories.find((category) => category.id === selectedCategory)?.title + : undefined; + const controlsContent = ; let gridContent: JSX.Element; @@ -123,12 +136,31 @@ export const PackageListGrid: FunctionComponent = ({ + { + setSelectedCategory(''); + }} + iconOnClickAriaLabel="Remove category" + data-test-sub="epmList.categoryBadge" + > + {selectedCategoryTitle} + +
+ ) : undefined + } /> {callout ? ( <> diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx index 67792355fbd7..0ef9b47f9096 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/available_packages.tsx @@ -52,7 +52,7 @@ import { IntegrationPreference } from '../../components/integration_preference'; import { mergeCategoriesAndCount } from './util'; import { ALL_CATEGORY, CategoryFacets } from './category_facets'; -import type { CategoryFacet } from './category_facets'; +import type { CategoryFacet, ExtendedIntegrationCategory } from './category_facets'; import type { CategoryParams } from '.'; import { getParams, categoryExists, mapToCard } from '.'; @@ -185,6 +185,7 @@ export const AvailablePackages: React.FC<{ isLoading: boolean; }> = ({ allPackages, isLoading }) => { const [preference, setPreference] = useState('recommended'); + useBreadcrumbs('integrations_all'); const { http } = useStartServices(); @@ -194,11 +195,14 @@ export const AvailablePackages: React.FC<{ useParams(), useLocation().search ); + const [category, setCategory] = useState(selectedCategory); const history = useHistory(); const { getHref, getAbsolutePath } = useLink(); - function setSelectedCategory(categoryId: string) { + function setUrlCategory(categoryId: string) { + setCategory(categoryId as ExtendedIntegrationCategory); + const url = pagePathGetters.integrations_all({ category: categoryId, searchTerm: searchParam, @@ -206,9 +210,9 @@ export const AvailablePackages: React.FC<{ history.push(url); } - function setSearchTerm(search: string) { + function setUrlSearchTerm(search: string) { // Use .replace so the browser's back button is not tied to single keystroke - history.replace(pagePathGetters.integrations_all({ searchTerm: search })[1]); + history.replace(pagePathGetters.integrations_all({ searchTerm: search, category })[1]); } const { @@ -265,7 +269,7 @@ export const AvailablePackages: React.FC<{ include_policy_templates: true, }); - const categories = useMemo(() => { + const categories: CategoryFacet[] = useMemo(() => { const eprAndCustomCategories: CategoryFacet[] = isLoadingCategories ? [] : mergeCategoriesAndCount( @@ -280,7 +284,7 @@ export const AvailablePackages: React.FC<{ count: cards.length, }, ...(eprAndCustomCategories ? eprAndCustomCategories : []), - ] as CategoryFacet[]; + ]; }, [cards, eprCategories, isLoadingCategories]); if (!isLoadingCategories && !categoryExists(selectedCategory, categories)) { @@ -303,9 +307,9 @@ export const AvailablePackages: React.FC<{ isLoadingCategories || isLoadingAllPackages || isLoadingAppendCustomIntegrations } categories={categories} - selectedCategory={selectedCategory} + selectedCategory={category} onCategoryChange={({ id }) => { - setSelectedCategory(id); + setUrlCategory(id); }} />
, @@ -314,11 +318,11 @@ export const AvailablePackages: React.FC<{ } const filteredCards = cards.filter((c) => { - if (selectedCategory === '') { + if (category === '') { return true; } - return c.categories.includes(selectedCategory); + return c.categories.includes(category); }); // TODO: Remove this hard coded list of integrations with a suggestion service @@ -393,8 +397,10 @@ export const AvailablePackages: React.FC<{ controls={controls} initialSearch={searchParam} list={filteredCards} - setSelectedCategory={setSelectedCategory} - onSearchChange={setSearchTerm} + selectedCategory={category} + setSelectedCategory={setUrlCategory} + categories={categories} + onSearchChange={setUrlSearchTerm} showMissingIntegrationMessage callout={noEprCallout} showCardLabels={false} diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/category_facets.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/category_facets.tsx index 059fcd45b449..573701ae9a6f 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/category_facets.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/category_facets.tsx @@ -6,6 +6,7 @@ */ import { EuiFacetButton, EuiFacetGroup } from '@elastic/eui'; +import type { IntegrationCategory } from '@kbn/custom-integrations-plugin/common'; import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -18,6 +19,9 @@ export interface CategoryFacet { title: string; } +export const UPDATES_AVAILABLE = 'updates_available'; +export type ExtendedIntegrationCategory = IntegrationCategory | typeof UPDATES_AVAILABLE | ''; + export const ALL_CATEGORY = { id: '', title: i18n.translate('xpack.fleet.epmList.allPackagesFilterLinkText', { @@ -25,13 +29,20 @@ export const ALL_CATEGORY = { }), }; -export const INSTALLED_CATEGORY = { +export const ALL_INSTALLED_CATEGORY = { id: '', title: i18n.translate('xpack.fleet.epmList.allPackagesInstalledFilterLinkText', { defaultMessage: 'All installed', }), }; +export const UPDATES_AVAILABLE_CATEGORY = { + id: UPDATES_AVAILABLE, + title: i18n.translate('xpack.fleet.epmList.updatesAvailableFilterLinkText', { + defaultMessage: 'Updates available', + }), +}; + export interface Props { isLoading?: boolean; categories: CategoryFacet[]; diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx index 93d226f88511..a384288d1050 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx @@ -8,8 +8,6 @@ import React, { useMemo } from 'react'; import { Switch, Route } from 'react-router-dom'; -import type { IntegrationCategory } from '@kbn/custom-integrations-plugin/common'; - import type { CustomIntegration } from '@kbn/custom-integrations-plugin/common'; import { installationStatuses } from '../../../../../../../common/constants'; @@ -27,23 +25,21 @@ import { useGetPackages } from '../../../../hooks'; import type { Section } from '../../..'; -import type { CategoryFacet } from './category_facets'; +import type { CategoryFacet, ExtendedIntegrationCategory } from './category_facets'; + import { InstalledPackages } from './installed_packages'; import { AvailablePackages } from './available_packages'; export interface CategoryParams { - category?: string; + category?: ExtendedIntegrationCategory; } export const getParams = (params: CategoryParams, search: string) => { const { category } = params; - const selectedCategory = category || ''; + const selectedCategory: ExtendedIntegrationCategory = category || ''; const queryParams = new URLSearchParams(search); const searchParam = queryParams.get(INTEGRATIONS_SEARCH_QUERYPARAM) || ''; - return { selectedCategory, searchParam } as { - selectedCategory: IntegrationCategory & ''; - searchParam: string; - }; + return { selectedCategory, searchParam }; }; export const categoryExists = (category: string, categories: CategoryFacet[]) => { diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/installed_packages.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/installed_packages.tsx index 7fdcb5bf335f..f5b3b50f8f2b 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/installed_packages.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/home/installed_packages.tsx @@ -24,7 +24,11 @@ import { CategoryFacets } from './category_facets'; import type { CategoryParams } from '.'; import { getParams, categoryExists, mapToCard } from '.'; -import { INSTALLED_CATEGORY } from './category_facets'; +import { + ALL_INSTALLED_CATEGORY, + UPDATES_AVAILABLE, + UPDATES_AVAILABLE_CATEGORY, +} from './category_facets'; const AnnouncementLink = () => { const { docLinks } = useStartServices(); @@ -107,7 +111,7 @@ export const InstalledPackages: React.FC<{ const history = useHistory(); - function setSelectedCategory(categoryId: string) { + function setUrlCategory(categoryId: string) { const url = pagePathGetters.integrations_installed({ category: categoryId, searchTerm: searchParam, @@ -116,12 +120,12 @@ export const InstalledPackages: React.FC<{ history.push(url); } - function setSearchTerm(search: string) { + function setUrlSearchTerm(search: string) { // Use .replace so the browser's back button is not tied to single keystroke history.replace( pagePathGetters.integrations_installed({ - category: selectedCategory, searchTerm: search, + selectedCategory, })[1] ); } @@ -138,15 +142,12 @@ export const InstalledPackages: React.FC<{ const categories: CategoryFacet[] = useMemo( () => [ { - ...INSTALLED_CATEGORY, + ...ALL_INSTALLED_CATEGORY, count: installedPackages.length, }, { - id: 'updates_available', + ...UPDATES_AVAILABLE_CATEGORY, count: updatablePackages.length, - title: i18n.translate('xpack.fleet.epmList.updatesAvailableFilterLinkText', { - defaultMessage: 'Updates available', - }), }, ], [installedPackages.length, updatablePackages.length] @@ -164,12 +165,12 @@ export const InstalledPackages: React.FC<{ setSelectedCategory(id)} + onCategoryChange={({ id }: CategoryFacet) => setUrlCategory(id)} /> ); const cards = ( - selectedCategory === 'updates_available' ? updatablePackages : installedPackages + selectedCategory === UPDATES_AVAILABLE ? updatablePackages : installedPackages ).map((item) => mapToCard({ getAbsolutePath, @@ -183,13 +184,14 @@ export const InstalledPackages: React.FC<{ const CalloutComponent = cards.some((c) => c.isUnverified) ? VerificationWarningCallout : InstalledIntegrationsInfoCallout; - const callout = - selectedCategory === 'updates_available' || isLoading ? null : ; + const callout = selectedCategory === UPDATES_AVAILABLE || isLoading ? null : ; return ( From 34c228b0c941308e01298e31223e7af0a5a2cee9 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Fri, 26 Aug 2022 10:53:37 +0200 Subject: [PATCH 25/50] Migrate remaining parts of server-side SO domain to packages (#139305) * create empty packages * create empty mock packages * start moving client/repository implementation * finish moving client/repo code * move import/export code * move migration code * create empty mocks package * start moving service code * continue fixing stuff, create yet another package * create usage-data package for internal contract * create core-deprecations-server package * fix last problems * fix mock package * start fixing usages * fix index exports * start fixing unit tests for new packages * lint * fix invalid char * fix more violations and test failures * fix more package tests * adapt more test files * one more fix * adapt repo tests * fix last (?) package tests * fix moment mocking * expose import/export error types again * remove test mocking * adapt imports * export as type * trying to fix the schema check task * duplicating usage collection types for now * fix stack trace assertion * fix duplicate import from different paths * [CI] Auto-commit changed files from 'node scripts/generate packages_build_manifest' * update readme's * move mocks to a dedicated folder * self review * move test_utils to integration tests * update package files * rename mocks * manually adapting exclude Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- package.json | 22 +++ packages/BUILD.bazel | 22 +++ .../core-deprecations-server/BUILD.bazel | 110 +++++++++++++ .../core-deprecations-server/README.md | 3 + .../core-deprecations-server/index.ts | 11 +- .../core-deprecations-server/jest.config.js | 13 ++ .../core-deprecations-server/package.json | 8 + .../core-deprecations-server/src/contracts.ts | 112 +++++++++++++ .../core-deprecations-server/src}/index.ts | 9 +- .../core-deprecations-server/tsconfig.json | 18 +++ .../BUILD.bazel | 132 ++++++++++++++++ .../README.md | 3 + .../index.ts | 15 ++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src}/index.ts | 4 +- .../priority_collection.test.ts.snap | 0 .../aggregations/aggs_types/bucket_aggs.ts | 0 .../aggregations/aggs_types/common_schemas.ts | 0 .../src}/lib/aggregations/aggs_types/index.ts | 0 .../aggregations/aggs_types/metrics_aggs.ts | 0 .../aggregations/aggs_types/pipeline_aggs.ts | 0 .../aggregations/aggs_types/schemas.test.ts | 0 .../src}/lib/aggregations/index.ts | 0 .../src}/lib/aggregations/validation.test.ts | 0 .../src}/lib/aggregations/validation.ts | 0 .../lib/aggregations/validation_utils.test.ts | 0 .../src}/lib/aggregations/validation_utils.ts | 0 ...ct_multi_namespace_references.test.mock.ts | 0 ...collect_multi_namespace_references.test.ts | 0 .../lib/collect_multi_namespace_references.ts | 11 +- .../src}/lib/decorate_es_error.test.ts | 0 .../src}/lib/decorate_es_error.ts | 0 .../src}/lib/filter_utils.test.ts | 0 .../src}/lib/filter_utils.ts | 0 .../lib/find_shared_origin_objects.test.ts | 12 +- .../src}/lib/find_shared_origin_objects.ts | 2 +- .../src}/lib/included_fields.test.ts | 0 .../src}/lib/included_fields.ts | 0 .../src}/lib/index.ts | 5 +- .../lib/internal_bulk_resolve.test.mock.ts | 0 .../src}/lib/internal_bulk_resolve.test.ts | 0 .../src}/lib/internal_bulk_resolve.ts | 2 +- .../src}/lib/internal_utils.test.ts | 18 --- .../src}/lib/internal_utils.ts | 23 --- .../delete_legacy_url_aliases.test.mock.ts | 0 .../delete_legacy_url_aliases.test.ts | 0 .../delete_legacy_url_aliases.ts | 0 .../find_legacy_url_aliases.test.ts | 11 +- .../find_legacy_url_aliases.ts | 2 +- .../src}/lib/legacy_url_aliases/index.ts | 0 .../src}/lib/point_in_time_finder.test.ts | 16 +- .../src}/lib/point_in_time_finder.ts | 9 +- .../preflight_check_for_create.test.mock.ts | 0 .../lib/preflight_check_for_create.test.ts | 0 .../src}/lib/preflight_check_for_create.ts | 3 +- .../src}/lib/priority_collection.test.ts | 0 .../src}/lib/priority_collection.ts | 0 .../src}/lib/repository.test.mock.ts | 0 .../src}/lib/repository.test.ts | 21 ++- .../src}/lib/repository.ts | 5 +- .../lib/repository_create_repository.test.ts | 11 +- .../lib/repository_es_client.test.mock.ts | 0 .../src}/lib/repository_es_client.test.ts | 0 .../src}/lib/repository_es_client.ts | 0 .../src}/lib/scoped_client_provider.test.ts | 0 .../src}/lib/scoped_client_provider.ts | 0 .../__snapshots__/sorting_params.test.ts.snap | 0 .../src}/lib/search_dsl/index.ts | 0 .../src}/lib/search_dsl/pit_params.test.ts | 0 .../src}/lib/search_dsl/pit_params.ts | 0 .../src}/lib/search_dsl/query_params.test.ts | 0 .../search_dsl/query_params.tests.mocks.ts | 0 .../src}/lib/search_dsl/query_params.ts | 0 .../lib/search_dsl/references_filter.test.ts | 0 .../src}/lib/search_dsl/references_filter.ts | 0 .../src}/lib/search_dsl/search_dsl.test.ts | 0 .../src}/lib/search_dsl/search_dsl.ts | 0 .../lib/search_dsl/sorting_params.test.ts | 0 .../src}/lib/search_dsl/sorting_params.ts | 0 .../lib/update_objects_spaces.test.mock.ts | 0 .../src}/lib/update_objects_spaces.test.ts | 0 .../src}/lib/update_objects_spaces.ts | 0 .../src/mocks/index.ts | 11 ++ .../src/mocks/kibana_migrator.mock.ts | 51 ++++++ .../src/mocks/point_in_time_finder.mock.ts | 59 +++++++ .../src/mocks/repository.mock.ts | 41 +++++ .../src}/saved_objects_client.test.ts | 11 +- .../src}/saved_objects_client.ts | 0 .../tsconfig.json | 18 +++ .../BUILD.bazel | 110 +++++++++++++ .../README.md | 7 + .../index.ts | 10 +- .../jest.config.js | 13 ++ .../package.json | 8 + .../src/index.ts | 11 ++ .../src}/point_in_time_finder.mock.ts | 2 +- .../src}/repository.mock.ts | 0 .../src}/saved_objects_client.mock.ts | 2 +- .../src}/scoped_client_provider.mock.ts | 2 +- .../tsconfig.json | 18 +++ .../src/apis/create_point_in_time_finder.ts | 10 +- .../src/apis/index.ts | 1 + .../src/index.ts | 1 + .../package.json | 1 + .../src/index.ts | 7 + .../src/migration/index.ts | 14 ++ .../src/migration/kibana_migrator.ts | 78 +++++++++ .../src/utils}/get_index_for_type.test.ts | 0 .../src/utils}/get_index_for_type.ts | 0 .../src/utils/index.ts | 10 ++ .../src/utils/object_key.test.ts | 25 +++ .../src/utils/object_key.ts | 30 ++++ .../package.json | 1 + .../BUILD.bazel | 120 ++++++++++++++ .../README.md | 3 + .../index.ts | 14 ++ .../jest.config.js | 13 ++ .../package.json | 8 + .../export/apply_export_transforms.test.ts | 0 .../src}/export/apply_export_transforms.ts | 0 .../collect_exported_objects.test.mocks.ts | 0 .../export/collect_exported_objects.test.ts | 2 +- .../src}/export/collect_exported_objects.ts | 0 .../src}/export/errors.ts | 0 .../src}/export/index.ts | 0 .../export/saved_objects_exporter.test.ts | 2 +- .../src}/export/saved_objects_exporter.ts | 0 .../src}/export/sort_objects.test.ts | 0 .../src}/export/sort_objects.ts | 0 .../src}/export/utils.test.ts | 0 .../src}/export/utils.ts | 0 .../src}/import/errors.ts | 0 .../import/import_saved_objects.test.mock.ts | 0 .../src}/import/import_saved_objects.test.ts | 2 +- .../src}/import/import_saved_objects.ts | 0 .../src}/import/index.ts | 0 .../src}/import/lib/check_conflicts.test.ts | 2 +- .../src}/import/lib/check_conflicts.ts | 0 .../lib/check_origin_conflicts.test.mock.ts | 0 .../import/lib/check_origin_conflicts.test.ts | 2 +- .../src}/import/lib/check_origin_conflicts.ts | 2 +- .../lib/check_reference_origins.test.mock.ts | 0 .../lib/check_reference_origins.test.ts | 2 +- .../import/lib/check_reference_origins.ts | 2 +- .../import/lib/collect_saved_objects.test.ts | 0 .../src}/import/lib/collect_saved_objects.ts | 0 .../import/lib/create_limit_stream.test.ts | 0 .../src}/import/lib/create_limit_stream.ts | 0 .../import/lib/create_objects_filter.test.ts | 0 .../src}/import/lib/create_objects_filter.ts | 0 .../import/lib/create_saved_objects.test.ts | 2 +- .../src}/import/lib/create_saved_objects.ts | 0 .../import/lib/execute_import_hooks.test.ts | 0 .../src}/import/lib/execute_import_hooks.ts | 0 .../src}/import/lib/extract_errors.test.ts | 0 .../src}/import/lib/extract_errors.ts | 0 .../get_import_state_map_for_retries.test.ts | 0 .../lib/get_import_state_map_for_retries.ts | 0 .../import/lib/get_non_unique_entries.test.ts | 0 .../src}/import/lib/get_non_unique_entries.ts | 0 .../src}/import/lib/index.ts | 0 .../src}/import/lib/regenerate_ids.test.ts | 0 .../src}/import/lib/regenerate_ids.ts | 0 .../src}/import/lib/split_overwrites.test.ts | 0 .../src}/import/lib/split_overwrites.ts | 0 .../src}/import/lib/types.ts | 0 .../src}/import/lib/utils.test.ts | 0 .../src}/import/lib/utils.ts | 0 .../import/lib/validate_references.test.ts | 2 +- .../src}/import/lib/validate_references.ts | 0 .../src}/import/lib/validate_retries.test.ts | 0 .../src}/import/lib/validate_retries.ts | 0 .../import/resolve_import_errors.test.mock.ts | 0 .../src}/import/resolve_import_errors.test.ts | 2 +- .../src}/import/resolve_import_errors.ts | 0 .../src}/import/saved_objects_importer.ts | 0 .../src/index.ts | 10 ++ .../tsconfig.json | 18 +++ .../BUILD.bazel | 106 +++++++++++++ .../README.md | 5 + .../index.ts | 9 ++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src/index.ts | 10 ++ .../src}/saved_objects_exporter.mock.ts | 0 .../src}/saved_objects_importer.mock.ts | 0 .../tsconfig.json | 18 +++ .../BUILD.bazel | 134 ++++++++++++++++ .../README.md | 3 + .../index.ts | 60 +++++++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src}/README.md | 0 .../kibana_migrator.test.ts.snap | 0 ...grations_state_action_machine.test.ts.snap | 0 ...lk_overwrite_transformed_documents.test.ts | 0 .../bulk_overwrite_transformed_documents.ts | 0 .../actions/calculate_exclude_filters.test.ts | 0 .../src}/actions/calculate_exclude_filters.ts | 0 .../catch_retryable_es_client_errors.test.ts | 0 .../catch_retryable_es_client_errors.ts | 0 .../actions/check_for_unknown_docs.mocks.ts | 0 .../actions/check_for_unknown_docs.test.ts | 0 .../src}/actions/check_for_unknown_docs.ts | 0 .../src}/actions/clone_index.test.ts | 0 .../src}/actions/clone_index.ts | 2 +- .../src}/actions/close_pit.test.ts | 0 .../src}/actions/close_pit.ts | 0 .../src}/actions/constants.ts | 0 .../src}/actions/create_index.test.ts | 0 .../src}/actions/create_index.ts | 0 .../src}/actions/es_errors.test.ts | 0 .../src}/actions/es_errors.ts | 0 .../src}/actions/fetch_indices.test.ts | 0 .../src}/actions/fetch_indices.ts | 0 .../src}/actions/index.ts | 0 .../src}/actions/initialize_action.test.ts | 0 .../src}/actions/initialize_action.ts | 0 .../src}/actions/open_pit.test.ts | 0 .../src}/actions/open_pit.ts | 0 .../actions/pickup_updated_mappings.test.ts | 0 .../src}/actions/pickup_updated_mappings.ts | 0 .../src}/actions/read_with_pit.test.ts | 0 .../src}/actions/read_with_pit.ts | 0 .../src}/actions/refresh_index.test.ts | 0 .../src}/actions/refresh_index.ts | 0 .../src}/actions/reindex.test.ts | 0 .../src}/actions/reindex.ts | 0 .../src}/actions/remove_write_block.test.ts | 0 .../src}/actions/remove_write_block.ts | 0 .../search_for_outdated_documents.test.ts | 0 .../actions/search_for_outdated_documents.ts | 0 .../src}/actions/set_write_block.test.ts | 0 .../src}/actions/set_write_block.ts | 0 .../src}/actions/transform_docs.ts | 0 .../src}/actions/update_aliases.test.ts | 0 .../src}/actions/update_aliases.ts | 0 .../update_and_pickup_mappings.test.ts | 0 .../actions/update_and_pickup_mappings.ts | 0 .../actions/wait_for_index_status.test.ts | 0 .../src}/actions/wait_for_index_status.ts | 0 ...t_for_pickup_updated_mappings_task.test.ts | 0 .../wait_for_pickup_updated_mappings_task.ts | 0 .../actions/wait_for_reindex_task.test.ts | 0 .../src}/actions/wait_for_reindex_task.ts | 0 .../src}/actions/wait_for_task.test.ts | 0 .../src}/actions/wait_for_task.ts | 0 .../build_active_mappings.test.ts.snap | 0 .../src}/core/build_active_mappings.test.ts | 0 .../src}/core/build_active_mappings.ts | 0 .../src}/core/build_index_map.test.ts | 0 .../src}/core/build_index_map.ts | 0 ...isable_unknown_type_mapping_fields.test.ts | 0 .../disable_unknown_type_mapping_fields.ts | 0 .../src}/core/document_migrator.test.mock.ts | 0 .../src}/core/document_migrator.test.ts | 0 .../src}/core/document_migrator.ts | 0 .../src}/core/index.ts | 1 - .../src}/core/migrate_raw_docs.test.ts | 0 .../src}/core/migrate_raw_docs.ts | 0 .../src}/core/migration_logger.ts | 0 ...nsform_saved_object_document_error.test.ts | 0 .../transform_saved_object_document_error.ts | 0 .../src}/core/unused_types.ts | 0 .../src/index.ts | 11 ++ .../src}/initial_state.test.ts | 2 +- .../src}/initial_state.ts | 0 .../src}/kibana_migrator.test.ts | 0 .../src}/kibana_migrator.ts | 46 +----- .../migrations_state_action_machine.test.ts | 2 +- .../src}/migrations_state_action_machine.ts | 0 .../migrations_state_machine_cleanup.mocks.ts | 0 .../src}/migrations_state_machine_cleanup.ts | 0 .../src}/model/create_batches.test.ts | 0 .../src}/model/create_batches.ts | 0 .../src}/model/extract_errors.test.ts | 0 .../src}/model/extract_errors.ts | 0 .../src}/model/helpers.test.ts | 0 .../src}/model/helpers.ts | 0 .../src}/model/index.ts | 0 .../src}/model/model.test.ts | 0 .../src}/model/model.ts | 0 .../src}/model/progress.test.ts | 0 .../src}/model/progress.ts | 0 .../src}/model/retry_state.test.ts | 0 .../src}/model/retry_state.ts | 0 .../src}/model/types.ts | 0 .../src}/next.test.ts | 0 .../src}/next.ts | 0 .../src}/run_resilient_migrator.ts | 2 +- .../src}/state.ts | 0 .../src}/state_action_machine.test.ts | 0 .../src}/state_action_machine.ts | 0 .../src}/types.ts | 2 +- .../tsconfig.json | 18 +++ .../BUILD.bazel | 111 +++++++++++++ .../README.md | 8 + .../index.ts | 14 ++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src/helpers}/retry.test.ts | 0 .../src/helpers}/retry_async.ts | 0 .../src/index.ts | 11 ++ .../src}/kibana_migrator.mock.ts | 11 +- .../src/migration.mocks.ts | 0 .../tsconfig.json | 18 +++ .../BUILD.bazel | 130 +++++++++++++++ .../README.md | 3 + .../index.ts | 34 ++++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src}/deprecations/deprecation_factory.ts | 2 +- .../src}/deprecations/index.ts | 0 .../unknown_object_types.test.mocks.ts | 17 ++ .../deprecations/unknown_object_types.test.ts | 35 ++++- .../src}/deprecations/unknown_object_types.ts | 8 +- .../src}/index.ts | 14 +- .../src}/internal_types.ts | 0 .../src/mocks/internal_mocks.ts | 40 +++++ .../src}/object_types/index.ts | 0 .../src}/object_types/registration.test.ts | 0 .../src}/object_types/registration.ts | 0 .../src}/routes/bulk_create.ts | 2 +- .../src}/routes/bulk_get.ts | 2 +- .../src}/routes/bulk_resolve.ts | 2 +- .../src}/routes/bulk_update.ts | 2 +- .../src}/routes/create.ts | 2 +- .../src}/routes/delete.ts | 2 +- .../deprecations/delete_unknown_types.ts | 0 .../src}/routes/deprecations/index.ts | 0 .../src}/routes/export.ts | 4 +- .../src}/routes/find.ts | 2 +- .../src}/routes/get.ts | 2 +- .../src}/routes/import.ts | 4 +- .../src}/routes/index.ts | 8 +- .../routes/legacy_import_export/export.ts | 2 +- .../routes/legacy_import_export/import.ts | 4 +- .../lib/collect_references_deep.test.ts | 2 +- .../lib/collect_references_deep.ts | 3 +- .../lib/export_dashboards.ts | 2 +- .../lib/import_dashboards.test.ts | 4 +- .../lib/import_dashboards.ts | 3 +- .../routes/legacy_import_export/lib/index.ts | 0 .../src}/routes/migrate.ts | 2 +- .../src}/routes/resolve.ts | 2 +- .../src}/routes/resolve_import_errors.ts | 4 +- .../src}/routes/update.ts | 2 +- .../src}/routes/utils.test.ts | 0 .../src}/routes/utils.ts | 4 +- .../saved_objects_route_handler_context.ts | 0 .../src}/saved_objects_service.test.mocks.ts | 32 +++- .../src}/saved_objects_service.test.ts | 26 +-- .../src}/saved_objects_service.ts | 24 +-- .../src}/status.test.ts | 2 +- .../src}/status.ts | 4 +- .../tsconfig.json | 18 +++ .../BUILD.bazel | 120 ++++++++++++++ .../core-saved-objects-server-mocks/README.md | 5 + .../core-saved-objects-server-mocks/index.ts | 9 ++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src/index.ts | 9 ++ .../src}/saved_objects_service.mock.ts | 19 ++- .../tsconfig.json | 18 +++ .../package.json | 1 + .../BUILD.bazel | 109 +++++++++++++ .../README.md | 6 + .../index.ts | 21 +++ .../jest.config.js | 13 ++ .../package.json | 8 + .../src/constants.ts | 22 +++ .../src/index.ts | 21 +++ .../src/internal_contract.ts | 25 +++ .../src/usage_stats_client.ts | 69 ++++++++ .../tsconfig.json | 18 +++ .../core-usage-data-server/BUILD.bazel | 106 +++++++++++++ .../core-usage-data-server/README.md | 3 + .../core-usage-data-server/index.ts | 21 +++ .../core-usage-data-server/jest.config.js | 13 ++ .../core-usage-data-server/package.json | 8 + .../src/core_usage_data.ts | 148 ++++++++++++++++++ .../src/core_usage_stats.ts | 138 ++++++++++++++++ .../core-usage-data-server/src/index.ts | 21 +++ .../src/setup_contract.ts | 50 ++++++ .../src/start_contract.ts | 52 ++++++ .../core-usage-data-server/tsconfig.json | 18 +++ src/core/server/core_route_handler_context.ts | 2 +- .../core_usage_data_service.mock.ts | 5 +- .../core_usage_data_service.test.ts | 4 +- .../core_usage_data_service.ts | 15 +- .../core_usage_data/core_usage_stats.ts | 2 +- .../core_usage_stats_client.test.ts | 5 +- .../core_usage_stats_client.ts | 44 ++---- src/core/server/core_usage_data/index.ts | 34 ++-- .../server/core_usage_data/migrations.test.ts | 2 +- src/core/server/core_usage_data/migrations.ts | 2 +- .../deprecations/deprecations_factory.test.ts | 2 +- .../deprecations/deprecations_factory.ts | 2 +- .../deprecations_registry.mock.ts | 4 +- .../deprecations_registry.test.ts | 5 +- .../deprecations/deprecations_registry.ts | 6 +- .../deprecations_route_handler_context.ts | 2 +- .../deprecations/deprecations_service.mock.ts | 3 +- .../deprecations/deprecations_service.ts | 87 +--------- src/core/server/deprecations/index.ts | 7 +- src/core/server/deprecations/types.ts | 27 ---- src/core/server/index.ts | 9 +- .../migrations/actions/actions.test.ts | 10 +- .../migrations/actions/es_errors.test.ts | 6 +- .../migrations/batch_size_bytes.test.ts | 2 +- ...ze_bytes_exceeds_es_content_length.test.ts | 2 +- .../migrations/collects_corrupt_docs.test.ts | 10 +- ...patible_cluster_routing_allocation.test.ts | 2 +- .../migrations/rewriting_id.test.ts | 2 +- .../migrations/type_registrations.test.ts | 2 +- .../saved_objects/routes/bulk_create.test.ts | 8 +- .../saved_objects/routes/bulk_get.test.ts | 8 +- .../saved_objects/routes/bulk_resolve.test.ts | 8 +- .../saved_objects/routes/bulk_update.test.ts | 8 +- .../saved_objects/routes/create.test.ts | 10 +- .../saved_objects/routes/delete.test.ts | 8 +- .../routes/delete_unknown_types.test.ts | 8 +- .../saved_objects/routes/export.test.ts | 14 +- .../saved_objects/routes/find.test.ts | 8 +- .../saved_objects/routes/get.test.ts | 8 +- .../saved_objects/routes/import.test.ts | 10 +- .../legacy_import_export/export.test.ts | 26 +-- .../legacy_import_export/import.test.ts | 20 ++- .../routes/migrate.test.mocks.ts | 12 +- .../saved_objects/routes/resolve.test.ts | 8 +- .../routes/resolve_import_errors.test.ts | 10 +- .../saved_objects/routes/test_utils.ts | 13 +- .../saved_objects/routes/update.test.ts | 8 +- src/core/server/internal_types.ts | 2 +- src/core/server/mocks.ts | 14 +- .../saved_objects/migrations/core/types.ts | 23 --- src/core/server/server.test.mocks.ts | 4 +- src/core/server/server.ts | 4 +- src/core/server/status/routes/status.ts | 2 +- src/core/server/status/status_service.ts | 2 +- src/core/server/test_utils.ts | 2 +- .../create_or_upgrade_saved_config.test.ts | 2 +- .../get_upgradeable_config.test.ts | 2 +- .../ui_settings/ui_settings_client.test.ts | 4 +- .../ui_settings_route_handler_context.ts | 2 +- .../ui_settings/ui_settings_service.test.ts | 4 +- .../server/ui_settings/ui_settings_service.ts | 2 +- .../collectors/core/core_usage_collector.ts | 3 +- .../collectors/core/core_usage_data.ts} | 122 ++------------- .../elasticsearch/transform/remove.test.ts | 2 +- .../elasticsearch/transform/transform.test.ts | 2 +- .../services/epm/kibana/assets/install.ts | 6 +- .../services/epm/packages/_install_package.ts | 4 +- .../alerts/license_expiration_rule.test.ts | 9 +- yarn.lock | 88 +++++++++++ 456 files changed, 3733 insertions(+), 721 deletions(-) create mode 100644 packages/core/deprecations/core-deprecations-server/BUILD.bazel create mode 100644 packages/core/deprecations/core-deprecations-server/README.md rename src/core/server/core_usage_data/constants.ts => packages/core/deprecations/core-deprecations-server/index.ts (70%) create mode 100644 packages/core/deprecations/core-deprecations-server/jest.config.js create mode 100644 packages/core/deprecations/core-deprecations-server/package.json create mode 100644 packages/core/deprecations/core-deprecations-server/src/contracts.ts rename {src/core/server/saved_objects/migrations => packages/core/deprecations/core-deprecations-server/src}/index.ts (66%) create mode 100644 packages/core/deprecations/core-deprecations-server/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/package.json rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/index.ts (73%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/__snapshots__/priority_collection.test.ts.snap (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/bucket_aggs.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/common_schemas.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/index.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/metrics_aggs.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/pipeline_aggs.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/aggs_types/schemas.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/index.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/validation.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/validation.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/validation_utils.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/aggregations/validation_utils.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/collect_multi_namespace_references.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/collect_multi_namespace_references.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/collect_multi_namespace_references.ts (97%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/decorate_es_error.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/decorate_es_error.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/filter_utils.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/filter_utils.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/find_shared_origin_objects.test.ts (94%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/find_shared_origin_objects.ts (98%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/included_fields.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/included_fields.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/index.ts (81%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/internal_bulk_resolve.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/internal_bulk_resolve.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/internal_bulk_resolve.ts (99%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/internal_utils.test.ts (96%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/internal_utils.ts (93%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/delete_legacy_url_aliases.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts (94%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/find_legacy_url_aliases.ts (98%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/legacy_url_aliases/index.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/point_in_time_finder.test.ts (96%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/point_in_time_finder.ts (96%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/preflight_check_for_create.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/preflight_check_for_create.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/preflight_check_for_create.ts (99%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/priority_collection.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/priority_collection.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository.test.ts (99%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository.ts (99%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository_create_repository.test.ts (90%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository_es_client.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository_es_client.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/repository_es_client.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/scoped_client_provider.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/scoped_client_provider.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/__snapshots__/sorting_params.test.ts.snap (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/index.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/pit_params.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/pit_params.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/query_params.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/query_params.tests.mocks.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/query_params.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/references_filter.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/references_filter.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/search_dsl.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/search_dsl.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/sorting_params.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/search_dsl/sorting_params.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/update_objects_spaces.test.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/update_objects_spaces.test.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/lib/update_objects_spaces.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/point_in_time_finder.mock.ts create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/saved_objects_client.test.ts (97%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-internal/src}/saved_objects_client.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-internal/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/README.md rename src/core/server/saved_objects/deprecations/unknown_object_types.test.mocks.ts => packages/core/saved-objects/core-saved-objects-api-server-mocks/index.ts (70%) create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/package.json create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/src/index.ts rename {src/core/server/saved_objects/service/lib => packages/core/saved-objects/core-saved-objects-api-server-mocks/src}/point_in_time_finder.mock.ts (94%) rename {src/core/server/saved_objects/service/lib => packages/core/saved-objects/core-saved-objects-api-server-mocks/src}/repository.mock.ts (100%) rename {src/core/server/saved_objects/service => packages/core/saved-objects/core-saved-objects-api-server-mocks/src}/saved_objects_client.mock.ts (94%) rename {src/core/server/saved_objects/service/lib => packages/core/saved-objects/core-saved-objects-api-server-mocks/src}/scoped_client_provider.mock.ts (85%) create mode 100644 packages/core/saved-objects/core-saved-objects-api-server-mocks/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/kibana_migrator.ts rename {src/core/server/saved_objects/service/lib => packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils}/get_index_for_type.test.ts (100%) rename {src/core/server/saved_objects/service/lib => packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils}/get_index_for_type.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.test.ts create mode 100644 packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.ts create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/package.json rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/apply_export_transforms.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/apply_export_transforms.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/collect_exported_objects.test.mocks.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/collect_exported_objects.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/collect_exported_objects.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/errors.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/saved_objects_exporter.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/saved_objects_exporter.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/sort_objects.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/sort_objects.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/utils.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/export/utils.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/errors.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/import_saved_objects.test.mock.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/import_saved_objects.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/import_saved_objects.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_conflicts.test.ts (98%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_conflicts.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_origin_conflicts.test.mock.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_origin_conflicts.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_origin_conflicts.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_reference_origins.test.mock.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_reference_origins.test.ts (98%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/check_reference_origins.ts (97%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/collect_saved_objects.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/collect_saved_objects.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_limit_stream.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_limit_stream.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_objects_filter.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_objects_filter.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_saved_objects.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/create_saved_objects.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/execute_import_hooks.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/execute_import_hooks.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/extract_errors.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/extract_errors.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/get_import_state_map_for_retries.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/get_import_state_map_for_retries.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/get_non_unique_entries.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/get_non_unique_entries.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/regenerate_ids.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/regenerate_ids.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/split_overwrites.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/split_overwrites.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/types.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/utils.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/utils.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/validate_references.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/validate_references.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/validate_retries.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/lib/validate_retries.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/resolve_import_errors.test.mock.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/resolve_import_errors.test.ts (99%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/resolve_import_errors.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-import-export-server-internal/src}/import/saved_objects_importer.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-internal/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/package.json create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/index.ts rename {src/core/server/saved_objects/export => packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src}/saved_objects_exporter.mock.ts (100%) rename {src/core/server/saved_objects/import => packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src}/saved_objects_importer.mock.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-import-export-server-mocks/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/package.json rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/README.md (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/__snapshots__/kibana_migrator.test.ts.snap (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/__snapshots__/migrations_state_action_machine.test.ts.snap (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/bulk_overwrite_transformed_documents.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/bulk_overwrite_transformed_documents.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/calculate_exclude_filters.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/calculate_exclude_filters.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/catch_retryable_es_client_errors.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/catch_retryable_es_client_errors.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/check_for_unknown_docs.mocks.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/check_for_unknown_docs.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/check_for_unknown_docs.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/clone_index.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/clone_index.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/close_pit.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/close_pit.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/constants.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/create_index.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/create_index.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/es_errors.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/es_errors.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/fetch_indices.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/fetch_indices.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/index.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/initialize_action.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/initialize_action.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/open_pit.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/open_pit.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/pickup_updated_mappings.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/pickup_updated_mappings.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/read_with_pit.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/read_with_pit.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/refresh_index.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/refresh_index.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/reindex.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/reindex.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/remove_write_block.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/remove_write_block.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/search_for_outdated_documents.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/search_for_outdated_documents.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/set_write_block.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/set_write_block.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/transform_docs.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/update_aliases.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/update_aliases.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/update_and_pickup_mappings.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/update_and_pickup_mappings.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_index_status.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_index_status.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_pickup_updated_mappings_task.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_pickup_updated_mappings_task.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_reindex_task.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_reindex_task.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_task.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/actions/wait_for_task.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/__snapshots__/build_active_mappings.test.ts.snap (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/build_active_mappings.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/build_active_mappings.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/build_index_map.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/build_index_map.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/disable_unknown_type_mapping_fields.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/disable_unknown_type_mapping_fields.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/document_migrator.test.mock.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/document_migrator.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/document_migrator.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/index.ts (93%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/migrate_raw_docs.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/migrate_raw_docs.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/migration_logger.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/transform_saved_object_document_error.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/transform_saved_object_document_error.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/core/unused_types.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/src/index.ts rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/initial_state.test.ts (99%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/initial_state.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/kibana_migrator.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/kibana_migrator.ts (78%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/migrations_state_action_machine.test.ts (99%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/migrations_state_action_machine.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/migrations_state_machine_cleanup.mocks.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/migrations_state_machine_cleanup.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/create_batches.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/create_batches.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/extract_errors.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/extract_errors.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/helpers.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/helpers.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/index.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/model.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/model.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/progress.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/progress.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/retry_state.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/retry_state.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/model/types.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/next.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/next.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/run_resilient_migrator.ts (98%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/state.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/state_action_machine.test.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/state_action_machine.ts (100%) rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-internal/src}/types.ts (94%) create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-internal/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/package.json rename {src/core/server/saved_objects/migrations/test_helpers => packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers}/retry.test.ts (100%) rename {src/core/server/saved_objects/migrations/test_helpers => packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers}/retry_async.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/index.ts rename {src/core/server/saved_objects/migrations => packages/core/saved-objects/core-saved-objects-migration-server-mocks/src}/kibana_migrator.mock.ts (88%) rename src/core/server/saved_objects/migrations/mocks.ts => packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-migration-server-mocks/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/package.json rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/deprecations/deprecation_factory.ts (93%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/deprecations/index.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.mocks.ts rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/deprecations/unknown_object_types.test.ts (85%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/deprecations/unknown_object_types.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/index.ts (74%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/internal_types.ts (100%) create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/src/mocks/internal_mocks.ts rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/object_types/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/object_types/registration.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/object_types/registration.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/bulk_create.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/bulk_get.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/bulk_resolve.ts (93%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/bulk_update.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/create.ts (96%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/delete.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/deprecations/delete_unknown_types.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/deprecations/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/export.ts (97%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/find.ts (97%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/get.ts (93%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/import.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/index.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/export.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/import.ts (93%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/collect_references_deep.test.ts (98%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/collect_references_deep.ts (89%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/export_dashboards.ts (90%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/import_dashboards.test.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/import_dashboards.ts (89%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/legacy_import_export/lib/index.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/migrate.ts (92%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/resolve.ts (93%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/resolve_import_errors.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/update.ts (95%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/utils.test.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/routes/utils.ts (92%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/saved_objects_route_handler_context.ts (100%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/saved_objects_service.test.mocks.ts (55%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/saved_objects_service.test.ts (96%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/saved_objects_service.ts (94%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/status.test.ts (98%) rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-internal/src}/status.ts (94%) create mode 100644 packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/BUILD.bazel create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/README.md create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/index.ts create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/jest.config.js create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/package.json create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/src/index.ts rename {src/core/server/saved_objects => packages/core/saved-objects/core-saved-objects-server-mocks/src}/saved_objects_service.mock.ts (89%) create mode 100644 packages/core/saved-objects/core-saved-objects-server-mocks/tsconfig.json create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/BUILD.bazel create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/README.md create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/index.ts create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/jest.config.js create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/package.json create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/src/constants.ts create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/src/index.ts create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/src/internal_contract.ts create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/src/usage_stats_client.ts create mode 100644 packages/core/usage-data/core-usage-data-base-server-internal/tsconfig.json create mode 100644 packages/core/usage-data/core-usage-data-server/BUILD.bazel create mode 100644 packages/core/usage-data/core-usage-data-server/README.md create mode 100644 packages/core/usage-data/core-usage-data-server/index.ts create mode 100644 packages/core/usage-data/core-usage-data-server/jest.config.js create mode 100644 packages/core/usage-data/core-usage-data-server/package.json create mode 100644 packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts create mode 100644 packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts create mode 100644 packages/core/usage-data/core-usage-data-server/src/index.ts create mode 100644 packages/core/usage-data/core-usage-data-server/src/setup_contract.ts create mode 100644 packages/core/usage-data/core-usage-data-server/src/start_contract.ts create mode 100644 packages/core/usage-data/core-usage-data-server/tsconfig.json delete mode 100644 src/core/server/deprecations/types.ts rename src/core/server/{ => integration_tests}/saved_objects/routes/test_utils.ts (83%) delete mode 100644 src/core/server/saved_objects/migrations/core/types.ts rename src/{core/server/core_usage_data/types.ts => plugins/kibana_usage_collection/server/collectors/core/core_usage_data.ts} (81%) diff --git a/package.json b/package.json index 643aa57db347..eaca21c41ee2 100644 --- a/package.json +++ b/package.json @@ -169,6 +169,7 @@ "@kbn/core-deprecations-browser-internal": "link:bazel-bin/packages/core/deprecations/core-deprecations-browser-internal", "@kbn/core-deprecations-browser-mocks": "link:bazel-bin/packages/core/deprecations/core-deprecations-browser-mocks", "@kbn/core-deprecations-common": "link:bazel-bin/packages/core/deprecations/core-deprecations-common", + "@kbn/core-deprecations-server": "link:bazel-bin/packages/core/deprecations/core-deprecations-server", "@kbn/core-doc-links-browser": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser", "@kbn/core-doc-links-browser-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal", "@kbn/core-doc-links-browser-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-mocks", @@ -237,13 +238,21 @@ "@kbn/core-preboot-server-mocks": "link:bazel-bin/packages/core/preboot/core-preboot-server-mocks", "@kbn/core-saved-objects-api-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-browser", "@kbn/core-saved-objects-api-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server", + "@kbn/core-saved-objects-api-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-internal", + "@kbn/core-saved-objects-api-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-mocks", "@kbn/core-saved-objects-base-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-internal", "@kbn/core-saved-objects-base-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-mocks", "@kbn/core-saved-objects-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser", "@kbn/core-saved-objects-browser-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser-internal", "@kbn/core-saved-objects-browser-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser-mocks", "@kbn/core-saved-objects-common": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-common", + "@kbn/core-saved-objects-import-export-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-internal", + "@kbn/core-saved-objects-import-export-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-mocks", + "@kbn/core-saved-objects-migration-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-internal", + "@kbn/core-saved-objects-migration-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-mocks", "@kbn/core-saved-objects-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server", + "@kbn/core-saved-objects-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-internal", + "@kbn/core-saved-objects-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-mocks", "@kbn/core-saved-objects-utils-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-utils-server", "@kbn/core-test-helpers-deprecations-getters": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-deprecations-getters", "@kbn/core-test-helpers-http-setup-browser": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser", @@ -254,6 +263,8 @@ "@kbn/core-ui-settings-browser-internal": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal", "@kbn/core-ui-settings-browser-mocks": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks", "@kbn/core-ui-settings-common": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-common", + "@kbn/core-usage-data-base-server-internal": "link:bazel-bin/packages/core/usage-data/core-usage-data-base-server-internal", + "@kbn/core-usage-data-server": "link:bazel-bin/packages/core/usage-data/core-usage-data-server", "@kbn/crypto": "link:bazel-bin/packages/kbn-crypto", "@kbn/crypto-browser": "link:bazel-bin/packages/kbn-crypto-browser", "@kbn/datemath": "link:bazel-bin/packages/kbn-datemath", @@ -827,6 +838,7 @@ "@types/kbn__core-deprecations-browser-internal": "link:bazel-bin/packages/core/deprecations/core-deprecations-browser-internal/npm_module_types", "@types/kbn__core-deprecations-browser-mocks": "link:bazel-bin/packages/core/deprecations/core-deprecations-browser-mocks/npm_module_types", "@types/kbn__core-deprecations-common": "link:bazel-bin/packages/core/deprecations/core-deprecations-common/npm_module_types", + "@types/kbn__core-deprecations-server": "link:bazel-bin/packages/core/deprecations/core-deprecations-server/npm_module_types", "@types/kbn__core-doc-links-browser": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser/npm_module_types", "@types/kbn__core-doc-links-browser-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal/npm_module_types", "@types/kbn__core-doc-links-browser-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-mocks/npm_module_types", @@ -896,13 +908,21 @@ "@types/kbn__core-public-internal-base": "link:bazel-bin/packages/core/public/internal-base/npm_module_types", "@types/kbn__core-saved-objects-api-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-browser/npm_module_types", "@types/kbn__core-saved-objects-api-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server/npm_module_types", + "@types/kbn__core-saved-objects-api-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-internal/npm_module_types", + "@types/kbn__core-saved-objects-api-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-mocks/npm_module_types", "@types/kbn__core-saved-objects-base-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-internal/npm_module_types", "@types/kbn__core-saved-objects-base-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-mocks/npm_module_types", "@types/kbn__core-saved-objects-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser/npm_module_types", "@types/kbn__core-saved-objects-browser-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser-internal/npm_module_types", "@types/kbn__core-saved-objects-browser-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-browser-mocks/npm_module_types", "@types/kbn__core-saved-objects-common": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-common/npm_module_types", + "@types/kbn__core-saved-objects-import-export-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-internal/npm_module_types", + "@types/kbn__core-saved-objects-import-export-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/npm_module_types", + "@types/kbn__core-saved-objects-migration-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-internal/npm_module_types", + "@types/kbn__core-saved-objects-migration-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-mocks/npm_module_types", "@types/kbn__core-saved-objects-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server/npm_module_types", + "@types/kbn__core-saved-objects-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-internal/npm_module_types", + "@types/kbn__core-saved-objects-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-mocks/npm_module_types", "@types/kbn__core-saved-objects-utils-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-utils-server/npm_module_types", "@types/kbn__core-server-internal-base": "link:bazel-bin/packages/core/server/internal-base/npm_module_types", "@types/kbn__core-test-helpers-deprecations-getters": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-deprecations-getters/npm_module_types", @@ -914,6 +934,8 @@ "@types/kbn__core-ui-settings-browser-internal": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-internal/npm_module_types", "@types/kbn__core-ui-settings-browser-mocks": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-browser-mocks/npm_module_types", "@types/kbn__core-ui-settings-common": "link:bazel-bin/packages/core/ui-settings/core-ui-settings-common/npm_module_types", + "@types/kbn__core-usage-data-base-server-internal": "link:bazel-bin/packages/core/usage-data/core-usage-data-base-server-internal/npm_module_types", + "@types/kbn__core-usage-data-server": "link:bazel-bin/packages/core/usage-data/core-usage-data-server/npm_module_types", "@types/kbn__crypto": "link:bazel-bin/packages/kbn-crypto/npm_module_types", "@types/kbn__crypto-browser": "link:bazel-bin/packages/kbn-crypto-browser/npm_module_types", "@types/kbn__datemath": "link:bazel-bin/packages/kbn-datemath/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 812d73e82826..ee2001f50216 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -35,6 +35,7 @@ filegroup( "//packages/core/deprecations/core-deprecations-browser-internal:build", "//packages/core/deprecations/core-deprecations-browser-mocks:build", "//packages/core/deprecations/core-deprecations-common:build", + "//packages/core/deprecations/core-deprecations-server:build", "//packages/core/doc-links/core-doc-links-browser:build", "//packages/core/doc-links/core-doc-links-browser-internal:build", "//packages/core/doc-links/core-doc-links-browser-mocks:build", @@ -102,13 +103,21 @@ filegroup( "//packages/core/preboot/core-preboot-server-mocks:build", "//packages/core/saved-objects/core-saved-objects-api-browser:build", "//packages/core/saved-objects/core-saved-objects-api-server:build", + "//packages/core/saved-objects/core-saved-objects-api-server-internal:build", + "//packages/core/saved-objects/core-saved-objects-api-server-mocks:build", "//packages/core/saved-objects/core-saved-objects-base-server-internal:build", "//packages/core/saved-objects/core-saved-objects-base-server-mocks:build", "//packages/core/saved-objects/core-saved-objects-browser:build", "//packages/core/saved-objects/core-saved-objects-browser-internal:build", "//packages/core/saved-objects/core-saved-objects-browser-mocks:build", "//packages/core/saved-objects/core-saved-objects-common:build", + "//packages/core/saved-objects/core-saved-objects-import-export-server-internal:build", + "//packages/core/saved-objects/core-saved-objects-import-export-server-mocks:build", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal:build", + "//packages/core/saved-objects/core-saved-objects-migration-server-mocks:build", "//packages/core/saved-objects/core-saved-objects-server:build", + "//packages/core/saved-objects/core-saved-objects-server-internal:build", + "//packages/core/saved-objects/core-saved-objects-server-mocks:build", "//packages/core/saved-objects/core-saved-objects-utils-server:build", "//packages/core/test-helpers/core-test-helpers-deprecations-getters:build", "//packages/core/test-helpers/core-test-helpers-http-setup-browser:build", @@ -119,6 +128,8 @@ filegroup( "//packages/core/ui-settings/core-ui-settings-browser-internal:build", "//packages/core/ui-settings/core-ui-settings-browser-mocks:build", "//packages/core/ui-settings/core-ui-settings-common:build", + "//packages/core/usage-data/core-usage-data-base-server-internal:build", + "//packages/core/usage-data/core-usage-data-server:build", "//packages/home/sample_data_card:build", "//packages/home/sample_data_tab:build", "//packages/home/sample_data_types:build", @@ -311,6 +322,7 @@ filegroup( "//packages/core/deprecations/core-deprecations-browser-internal:build_types", "//packages/core/deprecations/core-deprecations-browser-mocks:build_types", "//packages/core/deprecations/core-deprecations-common:build_types", + "//packages/core/deprecations/core-deprecations-server:build_types", "//packages/core/doc-links/core-doc-links-browser:build_types", "//packages/core/doc-links/core-doc-links-browser-internal:build_types", "//packages/core/doc-links/core-doc-links-browser-mocks:build_types", @@ -378,13 +390,21 @@ filegroup( "//packages/core/preboot/core-preboot-server-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-api-browser:build_types", "//packages/core/saved-objects/core-saved-objects-api-server:build_types", + "//packages/core/saved-objects/core-saved-objects-api-server-internal:build_types", + "//packages/core/saved-objects/core-saved-objects-api-server-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-base-server-internal:build_types", "//packages/core/saved-objects/core-saved-objects-base-server-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-browser:build_types", "//packages/core/saved-objects/core-saved-objects-browser-internal:build_types", "//packages/core/saved-objects/core-saved-objects-browser-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-common:build_types", + "//packages/core/saved-objects/core-saved-objects-import-export-server-internal:build_types", + "//packages/core/saved-objects/core-saved-objects-import-export-server-mocks:build_types", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal:build_types", + "//packages/core/saved-objects/core-saved-objects-migration-server-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-server:build_types", + "//packages/core/saved-objects/core-saved-objects-server-internal:build_types", + "//packages/core/saved-objects/core-saved-objects-server-mocks:build_types", "//packages/core/saved-objects/core-saved-objects-utils-server:build_types", "//packages/core/test-helpers/core-test-helpers-deprecations-getters:build_types", "//packages/core/test-helpers/core-test-helpers-http-setup-browser:build_types", @@ -395,6 +415,8 @@ filegroup( "//packages/core/ui-settings/core-ui-settings-browser-internal:build_types", "//packages/core/ui-settings/core-ui-settings-browser-mocks:build_types", "//packages/core/ui-settings/core-ui-settings-common:build_types", + "//packages/core/usage-data/core-usage-data-base-server-internal:build_types", + "//packages/core/usage-data/core-usage-data-server:build_types", "//packages/home/sample_data_card:build_types", "//packages/home/sample_data_tab:build_types", "//packages/kbn-ace:build_types", diff --git a/packages/core/deprecations/core-deprecations-server/BUILD.bazel b/packages/core/deprecations/core-deprecations-server/BUILD.bazel new file mode 100644 index 000000000000..4038dda7b56a --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/BUILD.bazel @@ -0,0 +1,110 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-deprecations-server" +PKG_REQUIRE_NAME = "@kbn/core-deprecations-server" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-utility-types:npm_module_types", + "//packages/core/deprecations/core-deprecations-common:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/deprecations/core-deprecations-server/README.md b/packages/core/deprecations/core-deprecations-server/README.md new file mode 100644 index 000000000000..ce44c5529f2b --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/README.md @@ -0,0 +1,3 @@ +# @kbn/core-deprecations-server + +This package contains public types for Core's server-side `deprecations` domain. diff --git a/src/core/server/core_usage_data/constants.ts b/packages/core/deprecations/core-deprecations-server/index.ts similarity index 70% rename from src/core/server/core_usage_data/constants.ts rename to packages/core/deprecations/core-deprecations-server/index.ts index 169c7b24e809..ace64af1dda3 100644 --- a/src/core/server/core_usage_data/constants.ts +++ b/packages/core/deprecations/core-deprecations-server/index.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ -/** @internal */ -export const CORE_USAGE_STATS_TYPE = 'core-usage-stats'; - -/** @internal */ -export const CORE_USAGE_STATS_ID = 'core-usage-stats'; +export type { + RegisterDeprecationsConfig, + GetDeprecationsContext, + DeprecationsServiceSetup, + DeprecationRegistryProvider, +} from './src'; diff --git a/packages/core/deprecations/core-deprecations-server/jest.config.js b/packages/core/deprecations/core-deprecations-server/jest.config.js new file mode 100644 index 000000000000..c2c3456e9279 --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/deprecations/core-deprecations-server'], +}; diff --git a/packages/core/deprecations/core-deprecations-server/package.json b/packages/core/deprecations/core-deprecations-server/package.json new file mode 100644 index 000000000000..ebd6fb9aeeef --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-deprecations-server", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/deprecations/core-deprecations-server/src/contracts.ts b/packages/core/deprecations/core-deprecations-server/src/contracts.ts new file mode 100644 index 000000000000..2fbae8639945 --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/src/contracts.ts @@ -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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { MaybePromise } from '@kbn/utility-types'; +import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; +import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; + +/** + * The deprecations service provides a way for the Kibana platform to communicate deprecated + * features and configs with its users. These deprecations are only communicated + * if the deployment is using these features. Allowing for a user tailored experience + * for upgrading the stack version. + * + * The Deprecation service is consumed by the upgrade assistant to assist with the upgrade + * experience. + * + * If a deprecated feature can be resolved without manual user intervention. + * Using correctiveActions.api allows the Upgrade Assistant to use this api to correct the + * deprecation upon a user trigger. + * + * @example + * ```ts + * import { DeprecationsDetails, GetDeprecationsContext, CoreSetup } from 'src/core/server'; + * import { i18n } from '@kbn/i18n'; + * + * async function getDeprecations({ esClient, savedObjectsClient }: GetDeprecationsContext): Promise { + * const deprecations: DeprecationsDetails[] = []; + * const count = await getFooCount(savedObjectsClient); + * if (count > 0) { + * deprecations.push({ + * title: i18n.translate('xpack.foo.deprecations.title', { + * defaultMessage: `Foo's are deprecated` + * }), + * message: i18n.translate('xpack.foo.deprecations.message', { + * defaultMessage: `You have {count} Foo's. Migrate your Foo's to a dashboard to continue using them.`, + * values: { count }, + * }), + * documentationUrl: + * 'https://www.elastic.co/guide/en/kibana/current/foo.html', + * level: 'warning', + * correctiveActions: { + * manualSteps: [ + * i18n.translate('xpack.foo.deprecations.manualStepOneMessage', { + * defaultMessage: 'Navigate to the Kibana Dashboard and click "Create dashboard".', + * }), + * i18n.translate('xpack.foo.deprecations.manualStepTwoMessage', { + * defaultMessage: 'Select Foo from the "New Visualization" window.', + * }), + * ], + * api: { + * path: '/internal/security/users/test_dashboard_user', + * method: 'POST', + * body: { + * username: 'test_dashboard_user', + * roles: [ + * "machine_learning_user", + * "enrich_user", + * "kibana_admin" + * ], + * full_name: "Alison Goryachev", + * email: "alisongoryachev@gmail.com", + * metadata: {}, + * enabled: true + * } + * }, + * }, + * }); + * } + * return deprecations; + * } + * + * + * export class Plugin() { + * setup: (core: CoreSetup) => { + * core.deprecations.registerDeprecations({ getDeprecations }); + * } + * } + * ``` + * + * @public + */ +export interface DeprecationsServiceSetup { + registerDeprecations: (deprecationContext: RegisterDeprecationsConfig) => void; +} + +/** + * @public + */ +export interface RegisterDeprecationsConfig { + getDeprecations: (context: GetDeprecationsContext) => MaybePromise; +} + +/** + * @public + */ +export interface GetDeprecationsContext { + esClient: IScopedClusterClient; + savedObjectsClient: SavedObjectsClientContract; +} + +/** + * @public + */ +export interface DeprecationRegistryProvider { + getRegistry: (domainId: string) => DeprecationsServiceSetup; +} diff --git a/src/core/server/saved_objects/migrations/index.ts b/packages/core/deprecations/core-deprecations-server/src/index.ts similarity index 66% rename from src/core/server/saved_objects/migrations/index.ts rename to packages/core/deprecations/core-deprecations-server/src/index.ts index 707b777330ec..9d4a624c2f23 100644 --- a/src/core/server/saved_objects/migrations/index.ts +++ b/packages/core/deprecations/core-deprecations-server/src/index.ts @@ -6,6 +6,9 @@ * Side Public License, v 1. */ -export type { MigrationResult } from './core'; -export { KibanaMigrator } from './kibana_migrator'; -export type { IKibanaMigrator, KibanaMigratorStatus } from './kibana_migrator'; +export type { + RegisterDeprecationsConfig, + GetDeprecationsContext, + DeprecationsServiceSetup, + DeprecationRegistryProvider, +} from './contracts'; diff --git a/packages/core/deprecations/core-deprecations-server/tsconfig.json b/packages/core/deprecations/core-deprecations-server/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/deprecations/core-deprecations-server/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-api-server-internal/BUILD.bazel new file mode 100644 index 000000000000..93f8baadd9fe --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/BUILD.bazel @@ -0,0 +1,132 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-api-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-api-server-internal" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks/*", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//lodash", + "@npm//p-map", + "@npm//@hapi/boom", + "//packages/kbn-config-schema", + "//packages/kbn-es-query", + "//packages/core/elasticsearch/core-elasticsearch-client-server-internal", + "//packages/core/elasticsearch/core-elasticsearch-server-internal", + "//packages/core/usage-data/core-usage-data-base-server-internal", + "//packages/core/saved-objects/core-saved-objects-utils-server", + #### test dependencies + "//packages/core/elasticsearch/core-elasticsearch-client-server-mocks", + "//packages/core/saved-objects/core-saved-objects-base-server-mocks", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//lodash", + "@npm//p-map", + "@npm//@hapi/boom", + "@npm//@elastic/elasticsearch", + "//packages/kbn-config-schema:npm_module_types", + "//packages/kbn-es-query:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-client-server-internal:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-server-internal:npm_module_types", + "//packages/core/usage-data/core-usage-data-base-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-common:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-utils-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/README.md b/packages/core/saved-objects/core-saved-objects-api-server-internal/README.md new file mode 100644 index 000000000000..69dca03cec05 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-saved-objects-api-server-internal + +This package contains the internal implementation of core's server-side savedObjects client and repository. diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/index.ts new file mode 100644 index 000000000000..73b3bc2777aa --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + SavedObjectsRepository, + SavedObjectsClient, + SavedObjectsClientProvider, + PointInTimeFinder, +} from './src'; +export type { ISavedObjectsClientProvider } from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/jest.config.js b/packages/core/saved-objects/core-saved-objects-api-server-internal/jest.config.js new file mode 100644 index 000000000000..f05cb54c737f --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-api-server-internal'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/package.json b/packages/core/saved-objects/core-saved-objects-api-server-internal/package.json new file mode 100644 index 000000000000..e7f962034bc4 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-api-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/saved_objects/service/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/index.ts similarity index 73% rename from src/core/server/saved_objects/service/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/index.ts index 0737fc725d1a..38811b194855 100644 --- a/src/core/server/saved_objects/service/index.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/index.ts @@ -6,6 +6,6 @@ * Side Public License, v 1. */ -export { SavedObjectsClientProvider } from './lib'; -export type { SavedObjectsRepository, ISavedObjectsClientProvider } from './lib'; export { SavedObjectsClient } from './saved_objects_client'; +export { SavedObjectsClientProvider, SavedObjectsRepository, PointInTimeFinder } from './lib'; +export type { ISavedObjectsClientProvider } from './lib'; diff --git a/src/core/server/saved_objects/service/lib/__snapshots__/priority_collection.test.ts.snap b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/__snapshots__/priority_collection.test.ts.snap similarity index 100% rename from src/core/server/saved_objects/service/lib/__snapshots__/priority_collection.test.ts.snap rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/__snapshots__/priority_collection.test.ts.snap diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/bucket_aggs.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/bucket_aggs.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/bucket_aggs.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/bucket_aggs.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/common_schemas.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/common_schemas.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/common_schemas.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/common_schemas.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/index.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/index.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/metrics_aggs.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/metrics_aggs.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/metrics_aggs.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/metrics_aggs.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/pipeline_aggs.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/pipeline_aggs.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/pipeline_aggs.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/pipeline_aggs.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/aggs_types/schemas.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/schemas.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/aggs_types/schemas.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/aggs_types/schemas.test.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/index.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/index.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/validation.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/validation.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation.test.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/validation.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/validation.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/validation_utils.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation_utils.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/validation_utils.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation_utils.test.ts diff --git a/src/core/server/saved_objects/service/lib/aggregations/validation_utils.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation_utils.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/aggregations/validation_utils.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/aggregations/validation_utils.ts diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.test.ts diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts similarity index 97% rename from src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts index 222b58d3a03e..16343ee38c4f 100644 --- a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/collect_multi_namespace_references.ts @@ -16,15 +16,14 @@ import type { } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; -import type { SavedObjectsSerializer } from '@kbn/core-saved-objects-base-server-internal'; -import { findLegacyUrlAliases } from './legacy_url_aliases'; -import { getRootFields } from './included_fields'; import { + type SavedObjectsSerializer, getObjectKey, - getSavedObjectFromSource, parseObjectKey, - rawDocExistsInNamespace, -} from './internal_utils'; +} from '@kbn/core-saved-objects-base-server-internal'; +import { findLegacyUrlAliases } from './legacy_url_aliases'; +import { getRootFields } from './included_fields'; +import { getSavedObjectFromSource, rawDocExistsInNamespace } from './internal_utils'; import type { CreatePointInTimeFinderFn } from './point_in_time_finder'; import type { RepositoryEsClient } from './repository_es_client'; import { findSharedOriginObjects } from './find_shared_origin_objects'; diff --git a/src/core/server/saved_objects/service/lib/decorate_es_error.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/decorate_es_error.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/decorate_es_error.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/decorate_es_error.test.ts diff --git a/src/core/server/saved_objects/service/lib/decorate_es_error.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/decorate_es_error.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/decorate_es_error.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/decorate_es_error.ts diff --git a/src/core/server/saved_objects/service/lib/filter_utils.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/filter_utils.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/filter_utils.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/filter_utils.test.ts diff --git a/src/core/server/saved_objects/service/lib/filter_utils.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/filter_utils.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/filter_utils.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/filter_utils.ts diff --git a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.test.ts similarity index 94% rename from src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.test.ts index 36501b00294f..760a33689dbf 100644 --- a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.test.ts @@ -7,11 +7,8 @@ */ import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; - -import type { ISavedObjectsRepository } from '@kbn/core-saved-objects-api-server'; import type { CreatePointInTimeFinderFn, PointInTimeFinder } from './point_in_time_finder'; -import { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; -import { savedObjectsRepositoryMock } from './repository.mock'; +import { savedObjectsPointInTimeFinderMock } from '../mocks/point_in_time_finder.mock'; import { findSharedOriginObjects } from './find_shared_origin_objects'; interface MockFindResultParams { @@ -22,12 +19,15 @@ interface MockFindResultParams { } describe('findSharedOriginObjects', () => { - let savedObjectsMock: jest.Mocked; + let savedObjectsMock: ReturnType; let pointInTimeFinder: DeeplyMockedKeys; let createPointInTimeFinder: jest.MockedFunction; beforeEach(() => { - savedObjectsMock = savedObjectsRepositoryMock.create(); + savedObjectsMock = savedObjectsPointInTimeFinderMock.createClient(); + savedObjectsMock.openPointInTimeForType.mockResolvedValueOnce({ + id: 'abc123', + }); savedObjectsMock.find.mockResolvedValue({ pit_id: 'foo', saved_objects: [], diff --git a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.ts similarity index 98% rename from src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.ts index 34aff0b11d6d..578cb2fda238 100644 --- a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/find_shared_origin_objects.ts @@ -8,7 +8,7 @@ import * as esKuery from '@kbn/es-query'; import { ALL_NAMESPACES_STRING } from '@kbn/core-saved-objects-utils-server'; -import { getObjectKey } from './internal_utils'; +import { getObjectKey } from '@kbn/core-saved-objects-base-server-internal'; import type { CreatePointInTimeFinderFn } from './point_in_time_finder'; interface ObjectOrigin { diff --git a/src/core/server/saved_objects/service/lib/included_fields.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/included_fields.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/included_fields.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/included_fields.test.ts diff --git a/src/core/server/saved_objects/service/lib/included_fields.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/included_fields.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/included_fields.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/included_fields.ts diff --git a/src/core/server/saved_objects/service/lib/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/index.ts similarity index 81% rename from src/core/server/saved_objects/service/lib/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/index.ts index a43750608bf9..c53306047c53 100644 --- a/src/core/server/saved_objects/service/lib/index.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/index.ts @@ -6,9 +6,8 @@ * Side Public License, v 1. */ -export type { SavedObjectsRepository } from './repository'; +export { SavedObjectsRepository } from './repository'; export { SavedObjectsClientProvider } from './scoped_client_provider'; +export { PointInTimeFinder } from './point_in_time_finder'; export type { ISavedObjectsClientProvider } from './scoped_client_provider'; - -export { getIndexForType } from './get_index_for_type'; diff --git a/src/core/server/saved_objects/service/lib/internal_bulk_resolve.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/internal_bulk_resolve.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/internal_bulk_resolve.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/internal_bulk_resolve.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.test.ts diff --git a/src/core/server/saved_objects/service/lib/internal_bulk_resolve.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts similarity index 99% rename from src/core/server/saved_objects/service/lib/internal_bulk_resolve.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts index b15fc56e2f3c..28e22d6e2634 100644 --- a/src/core/server/saved_objects/service/lib/internal_bulk_resolve.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_bulk_resolve.ts @@ -34,7 +34,7 @@ import { CORE_USAGE_STATS_ID, CORE_USAGE_STATS_TYPE, REPOSITORY_RESOLVE_OUTCOME_STATS, -} from '../../../core_usage_data'; +} from '@kbn/core-usage-data-base-server-internal'; import { getCurrentTime, getSavedObjectFromSource, diff --git a/src/core/server/saved_objects/service/lib/internal_utils.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.test.ts similarity index 96% rename from src/core/server/saved_objects/service/lib/internal_utils.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.test.ts index 96ca3949a477..c295c0b3faad 100644 --- a/src/core/server/saved_objects/service/lib/internal_utils.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.test.ts @@ -13,10 +13,8 @@ import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; import { getBulkOperationError, getCurrentTime, - getObjectKey, getSavedObjectFromSource, normalizeNamespace, - parseObjectKey, rawDocExistsInNamespace, rawDocExistsInNamespaces, } from './internal_utils'; @@ -361,19 +359,3 @@ describe('#getCurrentTime', () => { expect(getCurrentTime()).toEqual('2021-09-10T21:00:00.000Z'); }); }); - -describe('#getObjectKey', () => { - it('returns the expected key string', () => { - expect(getObjectKey({ type: 'foo', id: 'bar' })).toEqual('foo:bar'); - }); -}); - -describe('#parseObjectKey', () => { - it('returns the expected object', () => { - expect(parseObjectKey('foo:bar')).toEqual({ type: 'foo', id: 'bar' }); - }); - - it('throws error when input is malformed', () => { - expect(() => parseObjectKey('foobar')).toThrowError('Malformed object key'); - }); -}); diff --git a/src/core/server/saved_objects/service/lib/internal_utils.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts similarity index 93% rename from src/core/server/saved_objects/service/lib/internal_utils.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts index 84539510504a..cbe209012ff1 100644 --- a/src/core/server/saved_objects/service/lib/internal_utils.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/internal_utils.ts @@ -254,26 +254,3 @@ export function normalizeNamespace(namespace?: string) { export function getCurrentTime() { return new Date(Date.now()).toISOString(); } - -/** - * Takes an object with a `type` and `id` field and returns a key string. - * - * @internal - */ -export function getObjectKey({ type, id }: { type: string; id: string }) { - return `${type}:${id}`; -} - -/** - * Parses a 'type:id' key string and returns an object with a `type` field and an `id` field. - * - * @internal - */ -export function parseObjectKey(key: string) { - const type = key.slice(0, key.indexOf(':')); - const id = key.slice(type.length + 1); - if (!type || !id) { - throw new Error('Malformed object key (should be "type:id")'); - } - return { type, id }; -} diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/delete_legacy_url_aliases.ts diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts similarity index 94% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts index 36435b9828be..1af8bec312d7 100644 --- a/src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.test.ts @@ -8,23 +8,21 @@ import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; -import type { ISavedObjectsRepository } from '@kbn/core-saved-objects-api-server'; import { type LegacyUrlAlias, LEGACY_URL_ALIAS_TYPE, } from '@kbn/core-saved-objects-base-server-internal'; import type { CreatePointInTimeFinderFn, PointInTimeFinder } from '../point_in_time_finder'; -import { savedObjectsPointInTimeFinderMock } from '../point_in_time_finder.mock'; -import { savedObjectsRepositoryMock } from '../repository.mock'; import { findLegacyUrlAliases } from './find_legacy_url_aliases'; +import { savedObjectsPointInTimeFinderMock } from '../../mocks'; describe('findLegacyUrlAliases', () => { - let savedObjectsMock: jest.Mocked; + let savedObjectsMock: ReturnType; let pointInTimeFinder: DeeplyMockedKeys; let createPointInTimeFinder: jest.MockedFunction; beforeEach(() => { - savedObjectsMock = savedObjectsRepositoryMock.create(); + savedObjectsMock = savedObjectsPointInTimeFinderMock.createClient(); savedObjectsMock.find.mockResolvedValue({ pit_id: 'foo', saved_objects: [], @@ -33,6 +31,9 @@ describe('findLegacyUrlAliases', () => { page: 1, per_page: 100, }); + savedObjectsMock.openPointInTimeForType.mockResolvedValueOnce({ + id: 'abc123', + }); pointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ savedObjectsMock })(); // PIT finder mock uses the actual implementation, but it doesn't need to be created with real params because the SOR is mocked too createPointInTimeFinder = jest.fn().mockReturnValue(pointInTimeFinder); }); diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.ts similarity index 98% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.ts index 5a90a2e70d07..be87a42de718 100644 --- a/src/core/server/saved_objects/service/lib/legacy_url_aliases/find_legacy_url_aliases.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/find_legacy_url_aliases.ts @@ -10,8 +10,8 @@ import * as esKuery from '@kbn/es-query'; import { type LegacyUrlAlias, LEGACY_URL_ALIAS_TYPE, + getObjectKey, } from '@kbn/core-saved-objects-base-server-internal'; -import { getObjectKey } from '../internal_utils'; import type { CreatePointInTimeFinderFn } from '../point_in_time_finder'; interface FindLegacyUrlAliasesObject { diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/index.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/legacy_url_aliases/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/legacy_url_aliases/index.ts diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.test.ts similarity index 96% rename from src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.test.ts index 29fe08e48b16..2e31de3b267e 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.test.ts @@ -11,7 +11,7 @@ import type { SavedObjectsFindResult, SavedObjectsCreatePointInTimeFinderOptions, } from '@kbn/core-saved-objects-api-server'; -import { savedObjectsRepositoryMock } from './repository.mock'; +import { savedObjectsPointInTimeFinderMock } from '../mocks'; import { PointInTimeFinder } from './point_in_time_finder'; @@ -42,11 +42,11 @@ const mockHits = [ describe('createPointInTimeFinder()', () => { let logger: MockedLogger; - let repository: ReturnType; + let repository: ReturnType; beforeEach(() => { logger = loggerMock.create(); - repository = savedObjectsRepositoryMock.create(); + repository = savedObjectsPointInTimeFinderMock.createClient(); }); describe('#find', () => { @@ -332,9 +332,13 @@ describe('createPointInTimeFinder()', () => { }); test('finder can be reused after closing', async () => { - repository.openPointInTimeForType.mockResolvedValueOnce({ - id: 'abc123', - }); + repository.openPointInTimeForType + .mockResolvedValueOnce({ + id: 'abc123', + }) + .mockResolvedValueOnce({ + id: 'abc456', + }); repository.find .mockResolvedValueOnce({ total: 2, diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.ts similarity index 96% rename from src/core/server/saved_objects/service/lib/point_in_time_finder.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.ts index 03249c3e2799..2245201a634a 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/point_in_time_finder.ts @@ -10,17 +10,12 @@ import type { Logger } from '@kbn/logging'; import type { SavedObjectsFindOptions, SavedObjectsFindResponse, - SavedObjectsClientContract, SavedObjectsCreatePointInTimeFinderDependencies, SavedObjectsCreatePointInTimeFinderOptions, ISavedObjectsPointInTimeFinder, + SavedObjectsPointInTimeFinderClient, } from '@kbn/core-saved-objects-api-server'; -type PointInTimeFinderClient = Pick< - SavedObjectsClientContract, - 'find' | 'openPointInTimeForType' | 'closePointInTime' ->; - /** * @internal */ @@ -43,7 +38,7 @@ export class PointInTimeFinder implements ISavedObjectsPointInTimeFinder { readonly #log: Logger; - readonly #client: PointInTimeFinderClient; + readonly #client: SavedObjectsPointInTimeFinderClient; readonly #findOptions: SavedObjectsFindOptions; #open: boolean = false; #pitId?: string; diff --git a/src/core/server/saved_objects/service/lib/preflight_check_for_create.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/preflight_check_for_create.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/preflight_check_for_create.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/preflight_check_for_create.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.test.ts diff --git a/src/core/server/saved_objects/service/lib/preflight_check_for_create.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.ts similarity index 99% rename from src/core/server/saved_objects/service/lib/preflight_check_for_create.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.ts index a3fd4218c3ee..1d1b4839635e 100644 --- a/src/core/server/saved_objects/service/lib/preflight_check_for_create.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/preflight_check_for_create.ts @@ -19,12 +19,13 @@ import { } from '@kbn/core-saved-objects-utils-server'; import { LEGACY_URL_ALIAS_TYPE, + getObjectKey, type LegacyUrlAlias, type SavedObjectsSerializer, } from '@kbn/core-saved-objects-base-server-internal'; import { findLegacyUrlAliases } from './legacy_url_aliases'; import { Either, rawDocExistsInNamespaces } from './internal_utils'; -import { getObjectKey, isLeft, isRight } from './internal_utils'; +import { isLeft, isRight } from './internal_utils'; import type { CreatePointInTimeFinderFn } from './point_in_time_finder'; import type { RepositoryEsClient } from './repository_es_client'; diff --git a/src/core/server/saved_objects/service/lib/priority_collection.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/priority_collection.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/priority_collection.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/priority_collection.test.ts diff --git a/src/core/server/saved_objects/service/lib/priority_collection.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/priority_collection.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/priority_collection.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/priority_collection.ts diff --git a/src/core/server/saved_objects/service/lib/repository.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/repository.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/repository.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts similarity index 99% rename from src/core/server/saved_objects/service/lib/repository.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts index 30a6b1ab3615..c86945c6acb5 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.test.ts @@ -68,8 +68,7 @@ import { encodeHitVersion, LEGACY_URL_ALIAS_TYPE, } from '@kbn/core-saved-objects-base-server-internal'; -import { DocumentMigrator } from '../../migrations/core/document_migrator'; -import { mockKibanaMigrator } from '../../migrations/kibana_migrator.mock'; +import { kibanaMigratorMock } from '../mocks'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import * as esKuery from '@kbn/es-query'; import { errors as EsErrors } from '@elastic/elasticsearch'; @@ -105,7 +104,7 @@ const createUnsupportedTypeError = (type: string) => describe('SavedObjectsRepository', () => { let client: ReturnType; let savedObjectsRepository: SavedObjectsRepository; - let migrator: ReturnType; + let migrator: ReturnType; let logger: ReturnType; let serializer: jest.Mocked; @@ -252,12 +251,6 @@ describe('SavedObjectsRepository', () => { }) ); - const documentMigrator = new DocumentMigrator({ - typeRegistry: registry, - kibanaVersion: KIBANA_VERSION, - log: loggerMock.create(), - }); - const getMockGetResponse = ( { type, @@ -376,9 +369,13 @@ describe('SavedObjectsRepository', () => { beforeEach(() => { pointInTimeFinderMock.mockClear(); client = elasticsearchClientMock.createElasticsearchClient(); - migrator = mockKibanaMigrator.create(); - documentMigrator.prepareMigrations(); - migrator.migrateDocument = jest.fn().mockImplementation(documentMigrator.migrate); + migrator = kibanaMigratorMock.create(); + migrator.migrateDocument.mockImplementation((doc) => ({ + ...doc, + migrationVersion: { [doc.type]: '1.1.1' }, + coreMigrationVersion: KIBANA_VERSION, + })); + migrator.runMigrations = jest.fn().mockResolvedValue([{ status: 'skipped' }]); logger = loggerMock.create(); diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts similarity index 99% rename from src/core/server/saved_objects/service/lib/repository.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts index 524fe5f7eb96..961b44a1cd68 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts @@ -7,6 +7,7 @@ */ import { omit, isObject } from 'lodash'; +import type { Payload } from '@hapi/boom'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import * as esKuery from '@kbn/es-query'; import type { Logger } from '@kbn/logging'; @@ -78,13 +79,14 @@ import { encodeHitVersion, getRootPropertiesObjects, LEGACY_URL_ALIAS_TYPE, + getIndexForType, type IndexMapping, + type IKibanaMigrator, } from '@kbn/core-saved-objects-base-server-internal'; import { PointInTimeFinder } from './point_in_time_finder'; import { createRepositoryEsClient, RepositoryEsClient } from './repository_es_client'; import { getSearchDsl } from './search_dsl'; import { includedFields } from './included_fields'; -import { IKibanaMigrator } from '../../migrations'; import { internalBulkResolve, InternalBulkResolveError } from './internal_bulk_resolve'; import { validateConvertFilterToKueryNode } from './filter_utils'; import { validateAndConvertAggregations } from './aggregations'; @@ -102,7 +104,6 @@ import { } from './internal_utils'; import { collectMultiNamespaceReferences } from './collect_multi_namespace_references'; import { updateObjectsSpaces } from './update_objects_spaces'; -import { getIndexForType } from './get_index_for_type'; import { preflightCheckForCreate, PreflightCheckForCreateObject, diff --git a/src/core/server/saved_objects/service/lib/repository_create_repository.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts similarity index 90% rename from src/core/server/saved_objects/service/lib/repository_create_repository.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts index 9a2d56cdaaa8..564021482714 100644 --- a/src/core/server/saved_objects/service/lib/repository_create_repository.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts @@ -8,8 +8,7 @@ import { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; import { SavedObjectsRepository } from './repository'; -import { mockKibanaMigrator } from '../../migrations/kibana_migrator.mock'; -import { KibanaMigrator } from '../../migrations'; +import { kibanaMigratorMock } from '../mocks'; import { loggerMock, MockedLogger } from '@kbn/logging-mocks'; jest.mock('./repository'); @@ -57,7 +56,7 @@ describe('SavedObjectsRepository#createRepository', () => { migrations: {}, }); - const migrator = mockKibanaMigrator.create({ types: typeRegistry.getAllTypes() }); + const migrator = kibanaMigratorMock.create({ types: typeRegistry.getAllTypes() }); const RepositoryConstructor = SavedObjectsRepository as unknown as jest.Mock; @@ -69,7 +68,7 @@ describe('SavedObjectsRepository#createRepository', () => { it('should not allow a repository with an undefined type', () => { try { originalRepository.createRepository( - migrator as unknown as KibanaMigrator, + migrator, typeRegistry, '.kibana-test', callAdminCluster, @@ -85,7 +84,7 @@ describe('SavedObjectsRepository#createRepository', () => { it('should create a repository without hidden types', () => { const repository = originalRepository.createRepository( - migrator as unknown as KibanaMigrator, + migrator, typeRegistry, '.kibana-test', callAdminCluster, @@ -104,7 +103,7 @@ describe('SavedObjectsRepository#createRepository', () => { it('should create a repository with a unique list of hidden types', () => { const repository = originalRepository.createRepository( - migrator as unknown as KibanaMigrator, + migrator, typeRegistry, '.kibana-test', callAdminCluster, diff --git a/src/core/server/saved_objects/service/lib/repository_es_client.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/repository_es_client.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/repository_es_client.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/repository_es_client.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.test.ts diff --git a/src/core/server/saved_objects/service/lib/repository_es_client.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/repository_es_client.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_es_client.ts diff --git a/src/core/server/saved_objects/service/lib/scoped_client_provider.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/scoped_client_provider.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/scoped_client_provider.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/scoped_client_provider.test.ts diff --git a/src/core/server/saved_objects/service/lib/scoped_client_provider.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/scoped_client_provider.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/scoped_client_provider.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/scoped_client_provider.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/__snapshots__/sorting_params.test.ts.snap b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/__snapshots__/sorting_params.test.ts.snap similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/__snapshots__/sorting_params.test.ts.snap rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/__snapshots__/sorting_params.test.ts.snap diff --git a/src/core/server/saved_objects/service/lib/search_dsl/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/index.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/index.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/index.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/pit_params.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/pit_params.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/pit_params.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/pit_params.test.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/pit_params.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/pit_params.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/pit_params.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/pit_params.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/query_params.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/query_params.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.test.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/query_params.tests.mocks.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.tests.mocks.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/query_params.tests.mocks.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.tests.mocks.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/query_params.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/query_params.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/query_params.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/references_filter.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/references_filter.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/references_filter.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/references_filter.test.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/references_filter.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/references_filter.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/references_filter.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/references_filter.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/search_dsl.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/search_dsl.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/search_dsl.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/search_dsl.test.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/search_dsl.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/search_dsl.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/search_dsl.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/search_dsl.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/sorting_params.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/sorting_params.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/sorting_params.test.ts diff --git a/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/sorting_params.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/search_dsl/sorting_params.ts diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.test.mock.ts diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.test.ts diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/update_objects_spaces.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/update_objects_spaces.ts diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/index.ts new file mode 100644 index 000000000000..a2d933b58404 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; +export { kibanaMigratorMock } from './kibana_migrator.mock'; +export { repositoryMock } from './repository.mock'; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts new file mode 100644 index 000000000000..e2c7107ca380 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; +import type { IKibanaMigrator } from '@kbn/core-saved-objects-base-server-internal'; + +// mock duplicated from `@kbn/core/saved-objects-migration-server-mocks` to avoid cyclic dependencies + +const defaultSavedObjectTypes: SavedObjectsType[] = [ + { + name: 'testtype', + hidden: false, + namespaceType: 'single', + mappings: { + properties: { + name: { type: 'keyword' }, + }, + }, + migrations: () => ({}), + }, +]; + +const createMigratorMock = ( + { + types, + }: { + types: SavedObjectsType[]; + } = { types: defaultSavedObjectTypes } +) => { + const mockMigrator: jest.Mocked = { + kibanaVersion: '8.0.0-testing', + runMigrations: jest.fn(), + getActiveMappings: jest.fn(), + migrateDocument: jest.fn(), + prepareMigrations: jest.fn(), + getStatus$: jest.fn(), + }; + + // mockMigrator.getActiveMappings.mockReturnValue(buildActiveMappings(mergeTypes(types))); + mockMigrator.migrateDocument.mockImplementation((doc) => doc); + return mockMigrator; +}; + +export const kibanaMigratorMock = { + create: createMigratorMock, +}; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/point_in_time_finder.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/point_in_time_finder.mock.ts new file mode 100644 index 000000000000..d6b7e51f78bd --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/point_in_time_finder.mock.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { loggerMock, MockedLogger } from '@kbn/logging-mocks'; +import type { + SavedObjectsClientContract, + ISavedObjectsRepository, + SavedObjectsPointInTimeFinderClient, +} from '@kbn/core-saved-objects-api-server'; +import { PointInTimeFinder } from '../lib/point_in_time_finder'; + +// mock duplicated from `@kbn/core/saved-objects-api-server-mocks` to avoid cyclic dependencies + +const createPointInTimeFinderMock = ({ + logger = loggerMock.create(), + savedObjectsMock, +}: { + logger?: MockedLogger; + savedObjectsMock: jest.Mocked< + ISavedObjectsRepository | SavedObjectsClientContract | SavedObjectsPointInTimeFinderClient + >; +}): jest.Mock => { + const mock = jest.fn(); + + // To simplify testing, we use the actual implementation here, but pass through the + // mocked dependencies. This allows users to set their own `mockResolvedValue` on + // the SO client mock and have it reflected when using `createPointInTimeFinder`. + mock.mockImplementation((findOptions) => { + const finder = new PointInTimeFinder(findOptions, { + logger, + client: savedObjectsMock, + }); + + jest.spyOn(finder, 'find'); + jest.spyOn(finder, 'close'); + + return finder; + }); + + return mock; +}; + +const createPointInTimeFinderClientMock = (): jest.Mocked => { + return { + find: jest.fn(), + openPointInTimeForType: jest.fn(), + closePointInTime: jest.fn(), + }; +}; + +export const savedObjectsPointInTimeFinderMock = { + create: createPointInTimeFinderMock, + createClient: createPointInTimeFinderClientMock, +}; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts new file mode 100644 index 000000000000..2cdfcf1710ad --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/repository.mock.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { ISavedObjectsRepository } from '@kbn/core-saved-objects-api-server'; + +// mock duplicated from `@kbn/core/saved-objects-api-server-mocks` to avoid cyclic dependencies + +const createRepositoryMock = () => { + const mock: jest.Mocked = { + checkConflicts: jest.fn(), + create: jest.fn(), + bulkCreate: jest.fn(), + bulkUpdate: jest.fn(), + delete: jest.fn(), + bulkGet: jest.fn(), + find: jest.fn(), + get: jest.fn(), + closePointInTime: jest.fn(), + createPointInTimeFinder: jest.fn(), + openPointInTimeForType: jest.fn().mockResolvedValue({ id: 'some_pit_id' }), + bulkResolve: jest.fn(), + resolve: jest.fn(), + update: jest.fn(), + deleteByNamespace: jest.fn(), + incrementCounter: jest.fn(), + removeReferencesTo: jest.fn(), + collectMultiNamespaceReferences: jest.fn(), + updateObjectsSpaces: jest.fn(), + }; + + return mock; +}; + +export const repositoryMock = { + create: createRepositoryMock, +}; diff --git a/src/core/server/saved_objects/service/saved_objects_client.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts similarity index 97% rename from src/core/server/saved_objects/service/saved_objects_client.test.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts index 77afd3f771a1..5829f34a6ba7 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.test.ts @@ -25,14 +25,13 @@ import type { SavedObjectsUpdateObjectsSpacesOptions, } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsClient } from './saved_objects_client'; -import { savedObjectsRepositoryMock } from './lib/repository.mock'; -import { savedObjectsClientMock } from './saved_objects_client.mock'; +import { repositoryMock, savedObjectsPointInTimeFinderMock } from './mocks'; -describe('', () => { - let mockRepository: ReturnType; +describe('SavedObjectsClient', () => { + let mockRepository: ReturnType; beforeEach(() => { - mockRepository = savedObjectsRepositoryMock.create(); + mockRepository = repositoryMock.create(); }); test(`#create`, async () => { @@ -111,7 +110,7 @@ describe('', () => { type: 'foo', }; const dependencies = { - client: savedObjectsClientMock.create(), + client: savedObjectsPointInTimeFinderMock.createClient(), }; const result = client.createPointInTimeFinder(options, dependencies); diff --git a/src/core/server/saved_objects/service/saved_objects_client.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts similarity index 100% rename from src/core/server/saved_objects/service/saved_objects_client.ts rename to packages/core/saved-objects/core-saved-objects-api-server-internal/src/saved_objects_client.ts diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-api-server-internal/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-api-server-mocks/BUILD.bazel new file mode 100644 index 000000000000..f3bb20f39246 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/BUILD.bazel @@ -0,0 +1,110 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-api-server-mocks" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-api-server-mocks" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "//packages/core/saved-objects/core-saved-objects-utils-server", + "//packages/core/saved-objects/core-saved-objects-api-server-internal", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/core/saved-objects/core-saved-objects-api-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-utils-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/README.md b/packages/core/saved-objects/core-saved-objects-api-server-mocks/README.md new file mode 100644 index 000000000000..f45e68d7fb17 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/README.md @@ -0,0 +1,7 @@ +# @kbn/core-saved-objects-api-server-mocks + +This package contains mocks for core's server-side savedObjects client (and repository) APIs. +- savedObjectsRepositoryMock +- savedObjectsClientMock +- savedObjectsClientProviderMock +- savedObjectsPointInTimeFinderMock diff --git a/src/core/server/saved_objects/deprecations/unknown_object_types.test.mocks.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/index.ts similarity index 70% rename from src/core/server/saved_objects/deprecations/unknown_object_types.test.mocks.ts rename to packages/core/saved-objects/core-saved-objects-api-server-mocks/index.ts index 312204ad7784..b558e2d93d6d 100644 --- a/src/core/server/saved_objects/deprecations/unknown_object_types.test.mocks.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/index.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -export const getIndexForTypeMock = jest.fn(); - -jest.doMock('../service/lib/get_index_for_type', () => ({ - getIndexForType: getIndexForTypeMock, -})); +export { + savedObjectsClientMock, + savedObjectsRepositoryMock, + savedObjectsClientProviderMock, +} from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/jest.config.js b/packages/core/saved-objects/core-saved-objects-api-server-mocks/jest.config.js new file mode 100644 index 000000000000..ec56c40550ed --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-api-server-mocks'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/package.json b/packages/core/saved-objects/core-saved-objects-api-server-mocks/package.json new file mode 100644 index 000000000000..59726267976f --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-api-server-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/index.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/index.ts new file mode 100644 index 000000000000..7dad32d20a57 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsClientMock } from './saved_objects_client.mock'; +export { savedObjectsRepositoryMock } from './repository.mock'; +export { savedObjectsClientProviderMock } from './scoped_client_provider.mock'; diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/point_in_time_finder.mock.ts similarity index 94% rename from src/core/server/saved_objects/service/lib/point_in_time_finder.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-mocks/src/point_in_time_finder.mock.ts index 371c45e90c71..b14715db34dd 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/point_in_time_finder.mock.ts @@ -11,7 +11,7 @@ import type { SavedObjectsClientContract, ISavedObjectsRepository, } from '@kbn/core-saved-objects-api-server'; -import { PointInTimeFinder } from './point_in_time_finder'; +import { PointInTimeFinder } from '@kbn/core-saved-objects-api-server-internal'; const createPointInTimeFinderMock = ({ logger = loggerMock.create(), diff --git a/src/core/server/saved_objects/service/lib/repository.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/repository.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts diff --git a/src/core/server/saved_objects/service/saved_objects_client.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts similarity index 94% rename from src/core/server/saved_objects/service/saved_objects_client.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts index 55a96ea3cecf..75ee540cb7d8 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts @@ -8,7 +8,7 @@ import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; -import { savedObjectsPointInTimeFinderMock } from './lib/point_in_time_finder.mock'; +import { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; const create = () => { const mock = { diff --git a/src/core/server/saved_objects/service/lib/scoped_client_provider.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/scoped_client_provider.mock.ts similarity index 85% rename from src/core/server/saved_objects/service/lib/scoped_client_provider.mock.ts rename to packages/core/saved-objects/core-saved-objects-api-server-mocks/src/scoped_client_provider.mock.ts index 66f1c1ed9482..dd617cdbf3d3 100644 --- a/src/core/server/saved_objects/service/lib/scoped_client_provider.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/scoped_client_provider.mock.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ISavedObjectsClientProvider } from './scoped_client_provider'; +import type { ISavedObjectsClientProvider } from '@kbn/core-saved-objects-api-server-internal'; const create = (): jest.Mocked => ({ addClientWrapperFactory: jest.fn(), diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/tsconfig.json b/packages/core/saved-objects/core-saved-objects-api-server-mocks/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts index ea7e1f319a58..e46a259dfd4c 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts @@ -17,11 +17,19 @@ export type SavedObjectsCreatePointInTimeFinderOptions = Omit< 'page' | 'pit' | 'searchAfter' >; +/** + * @public + */ +export type SavedObjectsPointInTimeFinderClient = Pick< + SavedObjectsClientContract, + 'find' | 'openPointInTimeForType' | 'closePointInTime' +>; + /** * @public */ export interface SavedObjectsCreatePointInTimeFinderDependencies { - client: Pick; + client: SavedObjectsPointInTimeFinderClient; } /** @public */ diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/index.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/index.ts index 53457c98f20f..7dc8e7ab09fc 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/apis/index.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/apis/index.ts @@ -41,6 +41,7 @@ export type { SavedObjectsCreatePointInTimeFinderOptions, SavedObjectsCreatePointInTimeFinderDependencies, ISavedObjectsPointInTimeFinder, + SavedObjectsPointInTimeFinderClient, } from './create_point_in_time_finder'; export type { SavedObjectsDeleteOptions } from './delete'; export type { SavedObjectsDeleteByNamespaceOptions } from './delete_by_namespace'; diff --git a/packages/core/saved-objects/core-saved-objects-api-server/src/index.ts b/packages/core/saved-objects/core-saved-objects-api-server/src/index.ts index f10ee8e54881..93e35d01a6a3 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server/src/index.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server/src/index.ts @@ -51,4 +51,5 @@ export type { SavedObjectsClosePointInTimeOptions, SavedObjectsCreatePointInTimeFinderOptions, SavedObjectsFindOptions, + SavedObjectsPointInTimeFinderClient, } from './apis'; diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/package.json b/packages/core/saved-objects/core-saved-objects-base-server-internal/package.json index ff4b901f4905..6192262ab008 100644 --- a/packages/core/saved-objects/core-saved-objects-base-server-internal/package.json +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/package.json @@ -3,5 +3,6 @@ "private": true, "version": "1.0.0", "main": "./target_node/index.js", + "author": "Kibana Core", "license": "SSPL-1.0 OR Elastic License 2.0" } diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/index.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/index.ts index 5b504f43244d..5a4ef1447cd6 100644 --- a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/index.ts +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/index.ts @@ -27,3 +27,10 @@ export { type SavedObjectsMigrationConfigType, } from './saved_objects_config'; export { SavedObjectTypeRegistry } from './saved_objects_type_registry'; +export type { + IKibanaMigrator, + KibanaMigratorStatus, + MigrationResult, + MigrationStatus, +} from './migration'; +export { parseObjectKey, getObjectKey, getIndexForType } from './utils'; diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/index.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/index.ts new file mode 100644 index 000000000000..fe33846c4154 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/index.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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + IKibanaMigrator, + KibanaMigratorStatus, + MigrationStatus, + MigrationResult, +} from './kibana_migrator'; diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/kibana_migrator.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/kibana_migrator.ts new file mode 100644 index 000000000000..bb078135c8bc --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/migration/kibana_migrator.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Observable } from 'rxjs'; +import type { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; +import type { IndexMapping } from '../mappings'; + +/** @internal */ +export interface IKibanaMigrator { + readonly kibanaVersion: string; + + /** + * Migrates the mappings and documents in the Kibana index. By default, this will run only + * once and subsequent calls will return the result of the original call. + * + * @param options.rerun - If true, method will run a new migration when called again instead of + * returning the result of the initial migration. This should only be used when factors external + * to Kibana itself alter the kibana index causing the saved objects mappings or data to change + * after the Kibana server performed the initial migration. + * + * @remarks When the `rerun` parameter is set to true, no checks are performed to ensure that no migration + * is currently running. Chained or concurrent calls to `runMigrations({ rerun: true })` can lead to + * multiple migrations running at the same time. When calling with this parameter, it's expected that the calling + * code should ensure that the initial call resolves before calling the function again. + * + * @returns - A promise which resolves once all migrations have been applied. + * The promise resolves with an array of migration statuses, one for each + * elasticsearch index which was migrated. + */ + runMigrations(options?: { rerun?: boolean }): Promise; + + prepareMigrations(): void; + + getStatus$(): Observable; + + /** + * Gets all the index mappings defined by Kibana's enabled plugins. + */ + getActiveMappings(): IndexMapping; + + /** + * Migrates an individual doc to the latest version, as defined by the plugin migrations. + * + * @param doc - The saved object to migrate + * @returns `doc` with all registered migrations applied. + */ + migrateDocument(doc: SavedObjectUnsanitizedDoc): SavedObjectUnsanitizedDoc; +} + +/** @internal */ +export interface KibanaMigratorStatus { + status: MigrationStatus; + result?: MigrationResult[]; + waitingIndex?: string; +} + +/** @internal */ +export type MigrationStatus = + | 'waiting_to_start' + | 'waiting_for_other_nodes' + | 'running' + | 'completed'; + +/** @internal */ +export type MigrationResult = + | { status: 'skipped' } + | { status: 'patched' } + | { + status: 'migrated'; + destIndex: string; + sourceIndex: string; + elapsedMs: number; + }; diff --git a/src/core/server/saved_objects/service/lib/get_index_for_type.test.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.test.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/get_index_for_type.test.ts rename to packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.test.ts diff --git a/src/core/server/saved_objects/service/lib/get_index_for_type.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.ts similarity index 100% rename from src/core/server/saved_objects/service/lib/get_index_for_type.ts rename to packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.ts diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/index.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/index.ts new file mode 100644 index 000000000000..8db62a4c5228 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { getObjectKey, parseObjectKey } from './object_key'; +export { getIndexForType } from './get_index_for_type'; diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.test.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.test.ts new file mode 100644 index 000000000000..20ed6a1e0e9d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.test.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { parseObjectKey, getObjectKey } from './object_key'; + +describe('#getObjectKey', () => { + it('returns the expected key string', () => { + expect(getObjectKey({ type: 'foo', id: 'bar' })).toEqual('foo:bar'); + }); +}); + +describe('#parseObjectKey', () => { + it('returns the expected object', () => { + expect(parseObjectKey('foo:bar')).toEqual({ type: 'foo', id: 'bar' }); + }); + + it('throws error when input is malformed', () => { + expect(() => parseObjectKey('foobar')).toThrowError('Malformed object key'); + }); +}); diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.ts new file mode 100644 index 000000000000..6698174990bd --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/object_key.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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Takes an object with a `type` and `id` field and returns a key string. + * + * @internal + */ +export function getObjectKey({ type, id }: { type: string; id: string }) { + return `${type}:${id}`; +} + +/** + * Parses a 'type:id' key string and returns an object with a `type` field and an `id` field. + * + * @internal + */ +export function parseObjectKey(key: string) { + const type = key.slice(0, key.indexOf(':')); + const id = key.slice(type.length + 1); + if (!type || !id) { + throw new Error('Malformed object key (should be "type:id")'); + } + return { type, id }; +} diff --git a/packages/core/saved-objects/core-saved-objects-base-server-mocks/package.json b/packages/core/saved-objects/core-saved-objects-base-server-mocks/package.json index e119e704c7ac..e6120310e30e 100644 --- a/packages/core/saved-objects/core-saved-objects-base-server-mocks/package.json +++ b/packages/core/saved-objects/core-saved-objects-base-server-mocks/package.json @@ -3,5 +3,6 @@ "private": true, "version": "1.0.0", "main": "./target_node/index.js", + "author": "Kibana Core", "license": "SSPL-1.0 OR Elastic License 2.0" } diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/BUILD.bazel new file mode 100644 index 000000000000..6f44087cd02f --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/BUILD.bazel @@ -0,0 +1,120 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-import-export-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-import-export-server-internal" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//uuid", + "@npm//p-map", + "//packages/kbn-utils", + ### test dependencies + "//packages/core/saved-objects/core-saved-objects-api-server-mocks", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/uuid", + "@npm//p-map", + "//packages/kbn-utils:npm_module_types", + "//packages/kbn-logging:npm_module_types", + "//packages/core/http/core-http-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-common:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/README.md b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/README.md new file mode 100644 index 000000000000..37db6ccbc1f8 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-saved-objects-import-export-server-internal + +This package contains the internal implementation of core's server-side savedObjects import/export feature. diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/index.ts new file mode 100644 index 000000000000..498c5ab00d6c --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/index.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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + SavedObjectsExporter, + SavedObjectsExportError, + SavedObjectsImporter, + SavedObjectsImportError, +} from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/jest.config.js b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/jest.config.js new file mode 100644 index 000000000000..85d3971fb7ef --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-import-export-server-internal'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/package.json b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/package.json new file mode 100644 index 000000000000..666eda215a5d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-import-export-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/saved_objects/export/apply_export_transforms.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts similarity index 100% rename from src/core/server/saved_objects/export/apply_export_transforms.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.test.ts diff --git a/src/core/server/saved_objects/export/apply_export_transforms.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.ts similarity index 100% rename from src/core/server/saved_objects/export/apply_export_transforms.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.ts diff --git a/src/core/server/saved_objects/export/collect_exported_objects.test.mocks.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.mocks.ts similarity index 100% rename from src/core/server/saved_objects/export/collect_exported_objects.test.mocks.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.mocks.ts diff --git a/src/core/server/saved_objects/export/collect_exported_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts similarity index 99% rename from src/core/server/saved_objects/export/collect_exported_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts index 480a80e23cc9..04ea3f984b19 100644 --- a/src/core/server/saved_objects/export/collect_exported_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.test.ts @@ -13,7 +13,7 @@ import type { SavedObjectsExportablePredicate, } from '@kbn/core-saved-objects-server'; import { applyExportTransformsMock } from './collect_exported_objects.test.mocks'; -import { savedObjectsClientMock } from '../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; import { collectExportedObjects, ExclusionReason } from './collect_exported_objects'; diff --git a/src/core/server/saved_objects/export/collect_exported_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts similarity index 100% rename from src/core/server/saved_objects/export/collect_exported_objects.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/collect_exported_objects.ts diff --git a/src/core/server/saved_objects/export/errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts similarity index 100% rename from src/core/server/saved_objects/export/errors.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts diff --git a/src/core/server/saved_objects/export/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/index.ts similarity index 100% rename from src/core/server/saved_objects/export/index.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/index.ts diff --git a/src/core/server/saved_objects/export/saved_objects_exporter.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts similarity index 99% rename from src/core/server/saved_objects/export/saved_objects_exporter.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts index 55ee7642388b..614c9e3680ac 100644 --- a/src/core/server/saved_objects/export/saved_objects_exporter.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.test.ts @@ -10,7 +10,7 @@ import { httpServerMock } from '@kbn/core-http-server-mocks'; import type { SavedObject } from '@kbn/core-saved-objects-common'; import { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; import { SavedObjectsExporter } from './saved_objects_exporter'; -import { savedObjectsClientMock } from '../service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { loggerMock, MockedLogger } from '@kbn/logging-mocks'; import { Readable } from 'stream'; import { createPromiseFromStreams, createConcatStream } from '@kbn/utils'; diff --git a/src/core/server/saved_objects/export/saved_objects_exporter.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts similarity index 100% rename from src/core/server/saved_objects/export/saved_objects_exporter.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/saved_objects_exporter.ts diff --git a/src/core/server/saved_objects/export/sort_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts similarity index 100% rename from src/core/server/saved_objects/export/sort_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.test.ts diff --git a/src/core/server/saved_objects/export/sort_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts similarity index 100% rename from src/core/server/saved_objects/export/sort_objects.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/sort_objects.ts diff --git a/src/core/server/saved_objects/export/utils.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts similarity index 100% rename from src/core/server/saved_objects/export/utils.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.test.ts diff --git a/src/core/server/saved_objects/export/utils.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts similarity index 100% rename from src/core/server/saved_objects/export/utils.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/utils.ts diff --git a/src/core/server/saved_objects/import/errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts similarity index 100% rename from src/core/server/saved_objects/import/errors.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts diff --git a/src/core/server/saved_objects/import/import_saved_objects.test.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/import/import_saved_objects.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.mock.ts diff --git a/src/core/server/saved_objects/import/import_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts similarity index 99% rename from src/core/server/saved_objects/import/import_saved_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts index 9a086537c476..b44020e1774b 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.test.ts @@ -31,7 +31,7 @@ import type { SavedObjectsImportHook, } from '@kbn/core-saved-objects-server'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { savedObjectsClientMock } from '../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { importSavedObjectsFromStream, ImportSavedObjectsOptions } from './import_saved_objects'; import type { ImportStateMap } from './lib'; diff --git a/src/core/server/saved_objects/import/import_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts similarity index 100% rename from src/core/server/saved_objects/import/import_saved_objects.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/import_saved_objects.ts diff --git a/src/core/server/saved_objects/import/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/index.ts similarity index 100% rename from src/core/server/saved_objects/import/index.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/index.ts diff --git a/src/core/server/saved_objects/import/lib/check_conflicts.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts similarity index 98% rename from src/core/server/saved_objects/import/lib/check_conflicts.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts index 35be4e245086..8c58af772b88 100644 --- a/src/core/server/saved_objects/import/lib/check_conflicts.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { savedObjectsClientMock } from '../../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { SavedObject, SavedObjectReference, diff --git a/src/core/server/saved_objects/import/lib/check_conflicts.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/check_conflicts.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_conflicts.ts diff --git a/src/core/server/saved_objects/import/lib/check_origin_conflicts.test.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/check_origin_conflicts.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.mock.ts diff --git a/src/core/server/saved_objects/import/lib/check_origin_conflicts.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts similarity index 99% rename from src/core/server/saved_objects/import/lib/check_origin_conflicts.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts index 756214e2ddc0..225db282b31e 100644 --- a/src/core/server/saved_objects/import/lib/check_origin_conflicts.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.test.ts @@ -17,8 +17,8 @@ import type { import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { checkOriginConflicts } from './check_origin_conflicts'; -import { savedObjectsClientMock } from '../../../mocks'; import type { ImportStateMap } from './types'; jest.mock('uuid', () => ({ diff --git a/src/core/server/saved_objects/import/lib/check_origin_conflicts.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts similarity index 99% rename from src/core/server/saved_objects/import/lib/check_origin_conflicts.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts index 852b10c4a9a6..079c5c22191e 100644 --- a/src/core/server/saved_objects/import/lib/check_origin_conflicts.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_origin_conflicts.ts @@ -15,7 +15,7 @@ import type { } from '@kbn/core-saved-objects-common'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; -import { getObjectKey } from '../../service/lib/internal_utils'; +import { getObjectKey } from '@kbn/core-saved-objects-base-server-internal'; import type { ImportStateMap } from './types'; import { createOriginQuery } from './utils'; diff --git a/src/core/server/saved_objects/import/lib/check_reference_origins.test.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/check_reference_origins.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.test.mock.ts diff --git a/src/core/server/saved_objects/import/lib/check_reference_origins.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.test.ts similarity index 98% rename from src/core/server/saved_objects/import/lib/check_reference_origins.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.test.ts index fce677ec6ea4..37a9aa96dd52 100644 --- a/src/core/server/saved_objects/import/lib/check_reference_origins.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.test.ts @@ -14,7 +14,7 @@ import type { } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; import { checkReferenceOrigins, CheckReferenceOriginsParams } from './check_reference_origins'; -import { savedObjectsClientMock } from '../../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; import type { ImportStateMap } from './types'; diff --git a/src/core/server/saved_objects/import/lib/check_reference_origins.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.ts similarity index 97% rename from src/core/server/saved_objects/import/lib/check_reference_origins.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.ts index c1d5da0db430..65a0f9fd432f 100644 --- a/src/core/server/saved_objects/import/lib/check_reference_origins.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/check_reference_origins.ts @@ -9,8 +9,8 @@ import pMap from 'p-map'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; +import { getObjectKey, parseObjectKey } from '@kbn/core-saved-objects-base-server-internal'; import type { ImportStateMap, ImportStateValue } from './types'; -import { getObjectKey, parseObjectKey } from '../../service/lib/internal_utils'; import { createOriginQuery } from './utils'; export interface CheckReferenceOriginsParams { diff --git a/src/core/server/saved_objects/import/lib/collect_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/collect_saved_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.test.ts diff --git a/src/core/server/saved_objects/import/lib/collect_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/collect_saved_objects.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/collect_saved_objects.ts diff --git a/src/core/server/saved_objects/import/lib/create_limit_stream.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_limit_stream.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/create_limit_stream.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_limit_stream.test.ts diff --git a/src/core/server/saved_objects/import/lib/create_limit_stream.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_limit_stream.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/create_limit_stream.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_limit_stream.ts diff --git a/src/core/server/saved_objects/import/lib/create_objects_filter.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/create_objects_filter.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.test.ts diff --git a/src/core/server/saved_objects/import/lib/create_objects_filter.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/create_objects_filter.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_objects_filter.ts diff --git a/src/core/server/saved_objects/import/lib/create_saved_objects.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts similarity index 99% rename from src/core/server/saved_objects/import/lib/create_saved_objects.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts index 363d2bee5899..907532bcc8fb 100644 --- a/src/core/server/saved_objects/import/lib/create_saved_objects.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { savedObjectsClientMock } from '../../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { SavedObject, SavedObjectsImportFailure } from '@kbn/core-saved-objects-common'; import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; diff --git a/src/core/server/saved_objects/import/lib/create_saved_objects.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/create_saved_objects.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/create_saved_objects.ts diff --git a/src/core/server/saved_objects/import/lib/execute_import_hooks.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/execute_import_hooks.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.test.ts diff --git a/src/core/server/saved_objects/import/lib/execute_import_hooks.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/execute_import_hooks.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/execute_import_hooks.ts diff --git a/src/core/server/saved_objects/import/lib/extract_errors.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/extract_errors.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.test.ts diff --git a/src/core/server/saved_objects/import/lib/extract_errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/extract_errors.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/extract_errors.ts diff --git a/src/core/server/saved_objects/import/lib/get_import_state_map_for_retries.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/get_import_state_map_for_retries.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.test.ts diff --git a/src/core/server/saved_objects/import/lib/get_import_state_map_for_retries.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/get_import_state_map_for_retries.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_import_state_map_for_retries.ts diff --git a/src/core/server/saved_objects/import/lib/get_non_unique_entries.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_non_unique_entries.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/get_non_unique_entries.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_non_unique_entries.test.ts diff --git a/src/core/server/saved_objects/import/lib/get_non_unique_entries.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_non_unique_entries.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/get_non_unique_entries.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/get_non_unique_entries.ts diff --git a/src/core/server/saved_objects/import/lib/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/index.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/index.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/index.ts diff --git a/src/core/server/saved_objects/import/lib/regenerate_ids.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/regenerate_ids.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.test.ts diff --git a/src/core/server/saved_objects/import/lib/regenerate_ids.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/regenerate_ids.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/regenerate_ids.ts diff --git a/src/core/server/saved_objects/import/lib/split_overwrites.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/split_overwrites.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.test.ts diff --git a/src/core/server/saved_objects/import/lib/split_overwrites.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/split_overwrites.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/split_overwrites.ts diff --git a/src/core/server/saved_objects/import/lib/types.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/types.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/types.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/types.ts diff --git a/src/core/server/saved_objects/import/lib/utils.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/utils.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/utils.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/utils.test.ts diff --git a/src/core/server/saved_objects/import/lib/utils.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/utils.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/utils.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/utils.ts diff --git a/src/core/server/saved_objects/import/lib/validate_references.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.test.ts similarity index 99% rename from src/core/server/saved_objects/import/lib/validate_references.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.test.ts index 2a8095ef78ce..ceced695b287 100644 --- a/src/core/server/saved_objects/import/lib/validate_references.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.test.ts @@ -9,7 +9,7 @@ import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; import type { ValidateReferencesParams } from './validate_references'; import { validateReferences } from './validate_references'; -import { savedObjectsClientMock } from '../../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; function setup({ objects = [], diff --git a/src/core/server/saved_objects/import/lib/validate_references.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/validate_references.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_references.ts diff --git a/src/core/server/saved_objects/import/lib/validate_retries.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_retries.test.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/validate_retries.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_retries.test.ts diff --git a/src/core/server/saved_objects/import/lib/validate_retries.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_retries.ts similarity index 100% rename from src/core/server/saved_objects/import/lib/validate_retries.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/lib/validate_retries.ts diff --git a/src/core/server/saved_objects/import/resolve_import_errors.test.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/import/resolve_import_errors.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.mock.ts diff --git a/src/core/server/saved_objects/import/resolve_import_errors.test.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts similarity index 99% rename from src/core/server/saved_objects/import/resolve_import_errors.test.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts index 288e58aabb4c..ed93301a4581 100644 --- a/src/core/server/saved_objects/import/resolve_import_errors.test.ts +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.test.ts @@ -37,7 +37,7 @@ import type { SavedObjectsImportHook, } from '@kbn/core-saved-objects-server'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { savedObjectsClientMock } from '../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { resolveSavedObjectsImportErrors, ResolveSavedObjectsImportErrorsOptions, diff --git a/src/core/server/saved_objects/import/resolve_import_errors.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts similarity index 100% rename from src/core/server/saved_objects/import/resolve_import_errors.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/resolve_import_errors.ts diff --git a/src/core/server/saved_objects/import/saved_objects_importer.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/saved_objects_importer.ts similarity index 100% rename from src/core/server/saved_objects/import/saved_objects_importer.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/saved_objects_importer.ts diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/index.ts new file mode 100644 index 000000000000..8f22bad9f10f --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { SavedObjectsImporter, SavedObjectsImportError } from './import'; +export { SavedObjectsExporter, SavedObjectsExportError } from './export'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/BUILD.bazel new file mode 100644 index 000000000000..1eba980837e3 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/BUILD.bazel @@ -0,0 +1,106 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-import-export-server-mocks" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-import-export-server-mocks" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/README.md b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/README.md new file mode 100644 index 000000000000..3646f0bf2598 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/README.md @@ -0,0 +1,5 @@ +# @kbn/core-saved-objects-import-export-server-mocks + +This package contains the mocks for core's server-side savedObjects import/export feature. +- savedObjectsExporterMock +- savedObjectsImporterMock \ No newline at end of file diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/index.ts new file mode 100644 index 000000000000..2c3d48d7f0c7 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsExporterMock, savedObjectsImporterMock } from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/jest.config.js b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/jest.config.js new file mode 100644 index 000000000000..07df0b670a66 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-import-export-server-mocks'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/package.json b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/package.json new file mode 100644 index 000000000000..e043ddc54702 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-import-export-server-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/index.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/index.ts new file mode 100644 index 000000000000..6893dccdebbc --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsImporterMock } from './saved_objects_importer.mock'; +export { savedObjectsExporterMock } from './saved_objects_exporter.mock'; diff --git a/src/core/server/saved_objects/export/saved_objects_exporter.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_exporter.mock.ts similarity index 100% rename from src/core/server/saved_objects/export/saved_objects_exporter.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_exporter.mock.ts diff --git a/src/core/server/saved_objects/import/saved_objects_importer.mock.ts b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_importer.mock.ts similarity index 100% rename from src/core/server/saved_objects/import/saved_objects_importer.mock.ts rename to packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_importer.mock.ts diff --git a/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/tsconfig.json b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-migration-server-internal/BUILD.bazel new file mode 100644 index 000000000000..cb6e6dde51a2 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/BUILD.bazel @@ -0,0 +1,134 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-migration-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-migration-server-internal" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//uuid", + "@npm//semver", + "@npm//fp-ts", + "@npm//lodash", + "@npm//@hapi/boom", + "@npm//@elastic/elasticsearch", + "//packages/kbn-std", + "//packages/core/elasticsearch/core-elasticsearch-client-server-internal", + ### test dependencies + "//packages/core/elasticsearch/core-elasticsearch-server-mocks", + "//packages/core/elasticsearch/core-elasticsearch-client-server-mocks", + "//packages/core/logging/core-logging-server-mocks", + +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/uuid", + "@npm//@types/semver", + "@npm//fp-ts", + "@npm//lodash", + "@npm//@hapi/boom", + "@npm//@elastic/elasticsearch", + "//packages/kbn-logging:npm_module_types", + "//packages/kbn-std:npm_module_types", + "//packages/core/doc-links/core-doc-links-server:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-server:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-client-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-common:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-utils-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-internal:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/README.md b/packages/core/saved-objects/core-saved-objects-migration-server-internal/README.md new file mode 100644 index 000000000000..dfd470d12207 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-saved-objects-migration-server-internal + +This package contains the internal implementation of core's server-side savedObjects migration feature. diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts new file mode 100644 index 000000000000..cedd5dc36982 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { KibanaMigrator, buildActiveMappings, mergeTypes } from './src'; +export type { KibanaMigratorOptions } from './src'; +export { getAggregatedTypesDocuments } from './src/actions/check_for_unknown_docs'; +export { addExcludedTypesToBoolQuery } from './src/model/helpers'; + +// these are only used for integration tests +export { + bulkOverwriteTransformedDocuments, + closePit, + createIndex, + openPit, + calculateExcludeFilters, + checkForUnknownDocs, + waitForIndexStatus, + initAction, + cloneIndex, + waitForTask, + updateAndPickupMappings, + updateAliases, + transformDocs, + setWriteBlock, + searchForOutdatedDocuments, + removeWriteBlock, + reindex, + readWithPit, + refreshIndex, + pickupUpdatedMappings, + fetchIndices, + waitForReindexTask, + waitForPickupUpdatedMappingsTask, +} from './src/actions'; +export type { + OpenPitResponse, + ReadWithPit, + SearchResponse, + ReindexResponse, + UpdateByQueryResponse, + UpdateAndPickupMappingsResponse, +} from './src/actions'; +export { + isClusterShardLimitExceeded, + isIncompatibleMappingException, + isWriteBlockException, + isIndexNotFoundException, +} from './src/actions/es_errors'; +export { deterministicallyRegenerateObjectId } from './src/core/document_migrator'; +export { + REMOVED_TYPES, + type DocumentsTransformFailed, + type DocumentsTransformSuccess, +} from './src/core'; +export { MIGRATION_CLIENT_OPTIONS } from './src/run_resilient_migrator'; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/jest.config.js b/packages/core/saved-objects/core-saved-objects-migration-server-internal/jest.config.js new file mode 100644 index 000000000000..2add8c2ce194 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-migration-server-internal'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/package.json b/packages/core/saved-objects/core-saved-objects-migration-server-internal/package.json new file mode 100644 index 000000000000..d6f11a4e4182 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-migration-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/saved_objects/migrations/README.md b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md similarity index 100% rename from src/core/server/saved_objects/migrations/README.md rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md diff --git a/src/core/server/saved_objects/migrations/__snapshots__/kibana_migrator.test.ts.snap b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/__snapshots__/kibana_migrator.test.ts.snap similarity index 100% rename from src/core/server/saved_objects/migrations/__snapshots__/kibana_migrator.test.ts.snap rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/__snapshots__/kibana_migrator.test.ts.snap diff --git a/src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/__snapshots__/migrations_state_action_machine.test.ts.snap similarity index 100% rename from src/core/server/saved_objects/migrations/__snapshots__/migrations_state_action_machine.test.ts.snap rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/__snapshots__/migrations_state_action_machine.test.ts.snap diff --git a/src/core/server/saved_objects/migrations/actions/bulk_overwrite_transformed_documents.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/bulk_overwrite_transformed_documents.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/bulk_overwrite_transformed_documents.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/bulk_overwrite_transformed_documents.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/bulk_overwrite_transformed_documents.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/bulk_overwrite_transformed_documents.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/bulk_overwrite_transformed_documents.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/bulk_overwrite_transformed_documents.ts diff --git a/src/core/server/saved_objects/migrations/actions/calculate_exclude_filters.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/calculate_exclude_filters.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/calculate_exclude_filters.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/calculate_exclude_filters.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/calculate_exclude_filters.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/calculate_exclude_filters.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/calculate_exclude_filters.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/calculate_exclude_filters.ts diff --git a/src/core/server/saved_objects/migrations/actions/catch_retryable_es_client_errors.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/catch_retryable_es_client_errors.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/catch_retryable_es_client_errors.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/catch_retryable_es_client_errors.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/catch_retryable_es_client_errors.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/catch_retryable_es_client_errors.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/catch_retryable_es_client_errors.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/catch_retryable_es_client_errors.ts diff --git a/src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.mocks.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.mocks.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.mocks.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.mocks.ts diff --git a/src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/check_for_unknown_docs.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_for_unknown_docs.ts diff --git a/src/core/server/saved_objects/migrations/actions/clone_index.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/clone_index.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/clone_index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/clone_index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.ts index e95f969f4ad8..0e07a68c1ec3 100644 --- a/src/core/server/saved_objects/migrations/actions/clone_index.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.ts @@ -8,8 +8,8 @@ import * as Either from 'fp-ts/lib/Either'; import * as TaskEither from 'fp-ts/lib/TaskEither'; -import { errors as EsErrors } from '@elastic/elasticsearch'; import { pipe } from 'fp-ts/lib/pipeable'; +import { errors as EsErrors } from '@elastic/elasticsearch'; import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; import { catchRetryableEsClientErrors, diff --git a/src/core/server/saved_objects/migrations/actions/close_pit.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/close_pit.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/close_pit.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/close_pit.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/close_pit.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/close_pit.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/close_pit.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/close_pit.ts diff --git a/src/core/server/saved_objects/migrations/actions/constants.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/constants.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts diff --git a/src/core/server/saved_objects/migrations/actions/create_index.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/create_index.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/create_index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/create_index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts diff --git a/src/core/server/saved_objects/migrations/actions/es_errors.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/es_errors.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/es_errors.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/es_errors.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/es_errors.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/es_errors.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/es_errors.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/es_errors.ts diff --git a/src/core/server/saved_objects/migrations/actions/fetch_indices.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/fetch_indices.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/fetch_indices.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/fetch_indices.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/fetch_indices.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/fetch_indices.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/fetch_indices.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/fetch_indices.ts diff --git a/src/core/server/saved_objects/migrations/actions/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts diff --git a/src/core/server/saved_objects/migrations/actions/initialize_action.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/initialize_action.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/initialize_action.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/initialize_action.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/initialize_action.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/initialize_action.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/initialize_action.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/initialize_action.ts diff --git a/src/core/server/saved_objects/migrations/actions/open_pit.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/open_pit.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/open_pit.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/open_pit.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/open_pit.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/open_pit.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/open_pit.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/open_pit.ts diff --git a/src/core/server/saved_objects/migrations/actions/pickup_updated_mappings.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/pickup_updated_mappings.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/pickup_updated_mappings.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/pickup_updated_mappings.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/pickup_updated_mappings.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/pickup_updated_mappings.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/pickup_updated_mappings.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/pickup_updated_mappings.ts diff --git a/src/core/server/saved_objects/migrations/actions/read_with_pit.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/read_with_pit.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/read_with_pit.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/read_with_pit.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/read_with_pit.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/read_with_pit.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/read_with_pit.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/read_with_pit.ts diff --git a/src/core/server/saved_objects/migrations/actions/refresh_index.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/refresh_index.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/refresh_index.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/refresh_index.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/refresh_index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/refresh_index.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/refresh_index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/refresh_index.ts diff --git a/src/core/server/saved_objects/migrations/actions/reindex.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/reindex.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/reindex.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/reindex.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/reindex.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/reindex.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/reindex.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/reindex.ts diff --git a/src/core/server/saved_objects/migrations/actions/remove_write_block.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/remove_write_block.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/remove_write_block.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/remove_write_block.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/remove_write_block.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/remove_write_block.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/remove_write_block.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/remove_write_block.ts diff --git a/src/core/server/saved_objects/migrations/actions/search_for_outdated_documents.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/search_for_outdated_documents.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/search_for_outdated_documents.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/search_for_outdated_documents.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/search_for_outdated_documents.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/search_for_outdated_documents.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/search_for_outdated_documents.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/search_for_outdated_documents.ts diff --git a/src/core/server/saved_objects/migrations/actions/set_write_block.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/set_write_block.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/set_write_block.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/set_write_block.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/set_write_block.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/set_write_block.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/set_write_block.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/set_write_block.ts diff --git a/src/core/server/saved_objects/migrations/actions/transform_docs.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/transform_docs.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/transform_docs.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/transform_docs.ts diff --git a/src/core/server/saved_objects/migrations/actions/update_aliases.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_aliases.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/update_aliases.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_aliases.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/update_aliases.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_aliases.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/update_aliases.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_aliases.ts diff --git a/src/core/server/saved_objects/migrations/actions/update_and_pickup_mappings.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_and_pickup_mappings.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/update_and_pickup_mappings.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_and_pickup_mappings.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/update_and_pickup_mappings.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_and_pickup_mappings.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/update_and_pickup_mappings.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/update_and_pickup_mappings.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_index_status.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_index_status.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_index_status.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_index_status.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_index_status.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_index_status.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_index_status.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_index_status.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_pickup_updated_mappings_task.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_pickup_updated_mappings_task.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_pickup_updated_mappings_task.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_pickup_updated_mappings_task.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_pickup_updated_mappings_task.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_pickup_updated_mappings_task.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_pickup_updated_mappings_task.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_pickup_updated_mappings_task.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_reindex_task.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_reindex_task.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_reindex_task.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_reindex_task.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_reindex_task.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_reindex_task.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_reindex_task.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_reindex_task.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_task.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_task.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_task.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_task.test.ts diff --git a/src/core/server/saved_objects/migrations/actions/wait_for_task.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_task.ts similarity index 100% rename from src/core/server/saved_objects/migrations/actions/wait_for_task.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/wait_for_task.ts diff --git a/src/core/server/saved_objects/migrations/core/__snapshots__/build_active_mappings.test.ts.snap b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/__snapshots__/build_active_mappings.test.ts.snap similarity index 100% rename from src/core/server/saved_objects/migrations/core/__snapshots__/build_active_mappings.test.ts.snap rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/__snapshots__/build_active_mappings.test.ts.snap diff --git a/src/core/server/saved_objects/migrations/core/build_active_mappings.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/build_active_mappings.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.test.ts diff --git a/src/core/server/saved_objects/migrations/core/build_active_mappings.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/build_active_mappings.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.ts diff --git a/src/core/server/saved_objects/migrations/core/build_index_map.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_index_map.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/build_index_map.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_index_map.test.ts diff --git a/src/core/server/saved_objects/migrations/core/build_index_map.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_index_map.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/build_index_map.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_index_map.ts diff --git a/src/core/server/saved_objects/migrations/core/disable_unknown_type_mapping_fields.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/disable_unknown_type_mapping_fields.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/disable_unknown_type_mapping_fields.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/disable_unknown_type_mapping_fields.test.ts diff --git a/src/core/server/saved_objects/migrations/core/disable_unknown_type_mapping_fields.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/disable_unknown_type_mapping_fields.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/disable_unknown_type_mapping_fields.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/disable_unknown_type_mapping_fields.ts diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.test.mock.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.mock.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/document_migrator.test.mock.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.mock.ts diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/document_migrator.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.ts diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/document_migrator.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.ts diff --git a/src/core/server/saved_objects/migrations/core/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/index.ts similarity index 93% rename from src/core/server/saved_objects/migrations/core/index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/index.ts index b96f9ae98d8c..8e4ac2d0e54c 100644 --- a/src/core/server/saved_objects/migrations/core/index.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/index.ts @@ -17,4 +17,3 @@ export type { TransformErrorObjects, } from './migrate_raw_docs'; export { disableUnknownTypeMappingFields } from './disable_unknown_type_mapping_fields'; -export type { MigrationResult, MigrationStatus } from './types'; diff --git a/src/core/server/saved_objects/migrations/core/migrate_raw_docs.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migrate_raw_docs.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/migrate_raw_docs.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migrate_raw_docs.test.ts diff --git a/src/core/server/saved_objects/migrations/core/migrate_raw_docs.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migrate_raw_docs.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/migrate_raw_docs.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migrate_raw_docs.ts diff --git a/src/core/server/saved_objects/migrations/core/migration_logger.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migration_logger.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/migration_logger.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migration_logger.ts diff --git a/src/core/server/saved_objects/migrations/core/transform_saved_object_document_error.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/transform_saved_object_document_error.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/transform_saved_object_document_error.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/transform_saved_object_document_error.test.ts diff --git a/src/core/server/saved_objects/migrations/core/transform_saved_object_document_error.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/transform_saved_object_document_error.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/transform_saved_object_document_error.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/transform_saved_object_document_error.ts diff --git a/src/core/server/saved_objects/migrations/core/unused_types.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/unused_types.ts similarity index 100% rename from src/core/server/saved_objects/migrations/core/unused_types.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/unused_types.ts diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/index.ts new file mode 100644 index 000000000000..817a284468c1 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { KibanaMigrator, mergeTypes } from './kibana_migrator'; +export type { KibanaMigratorOptions } from './kibana_migrator'; +export { buildActiveMappings } from './core'; diff --git a/src/core/server/saved_objects/migrations/initial_state.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/initial_state.test.ts similarity index 99% rename from src/core/server/saved_objects/migrations/initial_state.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/initial_state.test.ts index 6d49b17d4fa8..2b0e9a7c7f1a 100644 --- a/src/core/server/saved_objects/migrations/initial_state.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/initial_state.test.ts @@ -14,7 +14,7 @@ import { type SavedObjectsMigrationConfigType, SavedObjectTypeRegistry, } from '@kbn/core-saved-objects-base-server-internal'; -import { loggingSystemMock } from '../../mocks'; +import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { createInitialState } from './initial_state'; const mockLogger = loggingSystemMock.create(); diff --git a/src/core/server/saved_objects/migrations/initial_state.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/initial_state.ts similarity index 100% rename from src/core/server/saved_objects/migrations/initial_state.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/initial_state.ts diff --git a/src/core/server/saved_objects/migrations/kibana_migrator.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/kibana_migrator.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts diff --git a/src/core/server/saved_objects/migrations/kibana_migrator.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts similarity index 78% rename from src/core/server/saved_objects/migrations/kibana_migrator.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts index 2a8f9a9c3ee0..1d8d766d8ac8 100644 --- a/src/core/server/saved_objects/migrations/kibana_migrator.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts @@ -27,8 +27,11 @@ import { type IndexMapping, type SavedObjectsTypeMappingDefinitions, type SavedObjectsMigrationConfigType, + type IKibanaMigrator, + type KibanaMigratorStatus, + type MigrationResult, } from '@kbn/core-saved-objects-base-server-internal'; -import { buildActiveMappings, MigrationResult, MigrationStatus } from './core'; +import { buildActiveMappings } from './core'; import { DocumentMigrator, VersionedTransformer } from './core/document_migrator'; import { createIndexMap } from './core/build_index_map'; import { runResilientMigrator } from './run_resilient_migrator'; @@ -44,18 +47,10 @@ export interface KibanaMigratorOptions { docLinks: DocLinksServiceStart; } -export type IKibanaMigrator = Pick; - -export interface KibanaMigratorStatus { - status: MigrationStatus; - result?: MigrationResult[]; - waitingIndex?: string; -} - /** * Manages the shape of mappings and documents in the Kibana index. */ -export class KibanaMigrator { +export class KibanaMigrator implements IKibanaMigrator { private readonly client: ElasticsearchClient; private readonly documentMigrator: VersionedTransformer; private readonly kibanaIndex: string; @@ -69,9 +64,10 @@ export class KibanaMigrator { }); private readonly activeMappings: IndexMapping; private readonly soMigrationsConfig: SavedObjectsMigrationConfigType; - public readonly kibanaVersion: string; private readonly docLinks: DocLinksServiceStart; + public readonly kibanaVersion: string; + /** * Creates an instance of KibanaMigrator. */ @@ -103,24 +99,6 @@ export class KibanaMigrator { this.docLinks = docLinks; } - /** - * Migrates the mappings and documents in the Kibana index. By default, this will run only - * once and subsequent calls will return the result of the original call. - * - * @param rerun - If true, method will run a new migration when called again instead of - * returning the result of the initial migration. This should only be used when factors external - * to Kibana itself alter the kibana index causing the saved objects mappings or data to change - * after the Kibana server performed the initial migration. - * - * @remarks When the `rerun` parameter is set to true, no checks are performed to ensure that no migration - * is currently running. Chained or concurrent calls to `runMigrations({ rerun: true })` can lead to - * multiple migrations running at the same time. When calling with this parameter, it's expected that the calling - * code should ensure that the initial call resolves before calling the function again. - * - * @returns - A promise which resolves once all migrations have been applied. - * The promise resolves with an array of migration statuses, one for each - * elasticsearch index which was migrated. - */ public runMigrations({ rerun = false }: { rerun?: boolean } = {}): Promise { if (this.migrationResult === undefined || rerun) { // Reruns are only used by CI / EsArchiver. Publishing status updates on reruns results in slowing down CI @@ -192,20 +170,10 @@ export class KibanaMigrator { return Promise.all(migrators.map((migrator) => migrator.migrate())); } - /** - * Gets all the index mappings defined by Kibana's enabled plugins. - * - */ public getActiveMappings(): IndexMapping { return this.activeMappings; } - /** - * Migrates an individual doc to the latest version, as defined by the plugin migrations. - * - * @param doc - The saved object to migrate - * @returns `doc` with all registered migrations applied. - */ public migrateDocument(doc: SavedObjectUnsanitizedDoc): SavedObjectUnsanitizedDoc { return this.documentMigrator.migrate(doc); } diff --git a/src/core/server/saved_objects/migrations/migrations_state_action_machine.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts similarity index 99% rename from src/core/server/saved_objects/migrations/migrations_state_action_machine.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts index 1c4644fb4332..55b0a53d8f80 100644 --- a/src/core/server/saved_objects/migrations/migrations_state_action_machine.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.test.ts @@ -12,7 +12,7 @@ import { docLinksServiceMock } from '@kbn/core-doc-links-server-mocks'; import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { LoggerAdapter } from '@kbn/core-logging-server-internal'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { elasticsearchServiceMock } from '../../mocks'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import * as Either from 'fp-ts/lib/Either'; import * as Option from 'fp-ts/lib/Option'; import { errors } from '@elastic/elasticsearch'; diff --git a/src/core/server/saved_objects/migrations/migrations_state_action_machine.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.ts similarity index 100% rename from src/core/server/saved_objects/migrations/migrations_state_action_machine.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_action_machine.ts diff --git a/src/core/server/saved_objects/migrations/migrations_state_machine_cleanup.mocks.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_machine_cleanup.mocks.ts similarity index 100% rename from src/core/server/saved_objects/migrations/migrations_state_machine_cleanup.mocks.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_machine_cleanup.mocks.ts diff --git a/src/core/server/saved_objects/migrations/migrations_state_machine_cleanup.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_machine_cleanup.ts similarity index 100% rename from src/core/server/saved_objects/migrations/migrations_state_machine_cleanup.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/migrations_state_machine_cleanup.ts diff --git a/src/core/server/saved_objects/migrations/model/create_batches.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/create_batches.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/create_batches.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/create_batches.test.ts diff --git a/src/core/server/saved_objects/migrations/model/create_batches.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/create_batches.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/create_batches.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/create_batches.ts diff --git a/src/core/server/saved_objects/migrations/model/extract_errors.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/extract_errors.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/extract_errors.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/extract_errors.test.ts diff --git a/src/core/server/saved_objects/migrations/model/extract_errors.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/extract_errors.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/extract_errors.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/extract_errors.ts diff --git a/src/core/server/saved_objects/migrations/model/helpers.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/helpers.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/helpers.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/helpers.test.ts diff --git a/src/core/server/saved_objects/migrations/model/helpers.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/helpers.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/helpers.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/helpers.ts diff --git a/src/core/server/saved_objects/migrations/model/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/index.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/index.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/index.ts diff --git a/src/core/server/saved_objects/migrations/model/model.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/model.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts diff --git a/src/core/server/saved_objects/migrations/model/model.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/model.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts diff --git a/src/core/server/saved_objects/migrations/model/progress.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/progress.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/progress.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/progress.test.ts diff --git a/src/core/server/saved_objects/migrations/model/progress.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/progress.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/progress.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/progress.ts diff --git a/src/core/server/saved_objects/migrations/model/retry_state.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/retry_state.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/retry_state.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/retry_state.test.ts diff --git a/src/core/server/saved_objects/migrations/model/retry_state.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/retry_state.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/retry_state.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/retry_state.ts diff --git a/src/core/server/saved_objects/migrations/model/types.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/types.ts similarity index 100% rename from src/core/server/saved_objects/migrations/model/types.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/types.ts diff --git a/src/core/server/saved_objects/migrations/next.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/next.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.test.ts diff --git a/src/core/server/saved_objects/migrations/next.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts similarity index 100% rename from src/core/server/saved_objects/migrations/next.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts diff --git a/src/core/server/saved_objects/migrations/run_resilient_migrator.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts similarity index 98% rename from src/core/server/saved_objects/migrations/run_resilient_migrator.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts index 6a6153b99714..47fe92ad82c5 100644 --- a/src/core/server/saved_objects/migrations/run_resilient_migrator.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts @@ -14,9 +14,9 @@ import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; import type { IndexMapping, SavedObjectsMigrationConfigType, + MigrationResult, } from '@kbn/core-saved-objects-base-server-internal'; import type { TransformRawDocs } from './types'; -import { MigrationResult } from './core'; import { next } from './next'; import { model } from './model'; import { createInitialState } from './initial_state'; diff --git a/src/core/server/saved_objects/migrations/state.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts similarity index 100% rename from src/core/server/saved_objects/migrations/state.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts diff --git a/src/core/server/saved_objects/migrations/state_action_machine.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state_action_machine.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/state_action_machine.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state_action_machine.test.ts diff --git a/src/core/server/saved_objects/migrations/state_action_machine.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state_action_machine.ts similarity index 100% rename from src/core/server/saved_objects/migrations/state_action_machine.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state_action_machine.ts diff --git a/src/core/server/saved_objects/migrations/types.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/types.ts similarity index 94% rename from src/core/server/saved_objects/migrations/types.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-internal/src/types.ts index baa39f5dbb82..cf7c74c305f2 100644 --- a/src/core/server/saved_objects/migrations/types.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import * as TaskEither from 'fp-ts/TaskEither'; +import * as TaskEither from 'fp-ts/lib/TaskEither'; import type { SavedObjectsRawDoc } from '@kbn/core-saved-objects-server'; import { DocumentsTransformFailed, DocumentsTransformSuccess } from './core'; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-migration-server-internal/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/BUILD.bazel new file mode 100644 index 000000000000..1bb04039073b --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/BUILD.bazel @@ -0,0 +1,111 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-migration-server-mocks" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-migration-server-mocks" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/README.md b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/README.md new file mode 100644 index 000000000000..d52e60997969 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/README.md @@ -0,0 +1,8 @@ +# @kbn/core-saved-objects-migration-server-mocks + +This package contains mocks for core's server-side savedObjects migration feature. +- mockKibanaMigrator +- migrationMocks + +Note: the package is supposed to only be needed for core's internal testing, as all the mocks are for internal +Core components that are not publicly exposed. \ No newline at end of file diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/index.ts new file mode 100644 index 000000000000..4a37278a0e95 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/index.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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + mockKibanaMigrator, + migrationMocks, + createSavedObjectsMigrationLoggerMock, + retryAsync, +} from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/jest.config.js b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/jest.config.js new file mode 100644 index 000000000000..4c6f7fb04939 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-migration-server-mocks'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/package.json b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/package.json new file mode 100644 index 000000000000..2a4723650d99 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-migration-server-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/saved_objects/migrations/test_helpers/retry.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry.test.ts similarity index 100% rename from src/core/server/saved_objects/migrations/test_helpers/retry.test.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry.test.ts diff --git a/src/core/server/saved_objects/migrations/test_helpers/retry_async.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts similarity index 100% rename from src/core/server/saved_objects/migrations/test_helpers/retry_async.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/index.ts new file mode 100644 index 000000000000..12706b2c5f4e --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { mockKibanaMigrator } from './kibana_migrator.mock'; +export { migrationMocks, createSavedObjectsMigrationLoggerMock } from './migration.mocks'; +export { retryAsync } from './helpers/retry_async'; diff --git a/src/core/server/saved_objects/migrations/kibana_migrator.mock.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts similarity index 88% rename from src/core/server/saved_objects/migrations/kibana_migrator.mock.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts index 5fdf4bb26c3b..e7df2a0363a2 100644 --- a/src/core/server/saved_objects/migrations/kibana_migrator.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts @@ -6,12 +6,13 @@ * Side Public License, v 1. */ -import { IKibanaMigrator, KibanaMigratorStatus } from './kibana_migrator'; -import { buildActiveMappings } from './core'; - -const { mergeTypes } = jest.requireActual('./kibana_migrator'); -import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; import { BehaviorSubject } from 'rxjs'; +import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; +import type { + IKibanaMigrator, + KibanaMigratorStatus, +} from '@kbn/core-saved-objects-base-server-internal'; +import { buildActiveMappings, mergeTypes } from '@kbn/core-saved-objects-migration-server-internal'; const defaultSavedObjectTypes: SavedObjectsType[] = [ { diff --git a/src/core/server/saved_objects/migrations/mocks.ts b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts similarity index 100% rename from src/core/server/saved_objects/migrations/mocks.ts rename to packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-mocks/tsconfig.json b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-migration-server-mocks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-server-internal/BUILD.bazel new file mode 100644 index 000000000000..5c5474ce0737 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/BUILD.bazel @@ -0,0 +1,130 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-server-internal" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//json-stable-stringify", + "//packages/kbn-config-schema", + "//packages/core/base/core-base-common", + "//packages/core/saved-objects/core-saved-objects-base-server-internal", + "//packages/core/saved-objects/core-saved-objects-api-server-internal", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal", + "//packages/core/saved-objects/core-saved-objects-import-export-server-internal", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/json-stable-stringify", + "//packages/kbn-config-schema:npm_module_types", + "//packages/kbn-logging:npm_module_types", + "//packages/core/base/core-base-common:npm_module_types", + "//packages/core/deprecations/core-deprecations-common:npm_module_types", + "//packages/core/http/core-http-server:npm_module_types", + "//packages/core/http/core-http-server-internal:npm_module_types", + "//packages/core/elasticsearch/core-elasticsearch-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-common:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-migration-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-import-export-server-internal:npm_module_types", + "//packages/core/usage-data/core-usage-data-base-server-internal:npm_module_types", + "//packages/core/deprecations/core-deprecations-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/README.md b/packages/core/saved-objects/core-saved-objects-server-internal/README.md new file mode 100644 index 000000000000..a57faf8b9370 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-saved-objects-server-internal + +This package contains the internal implementation of core's server-side savedObjects service. diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/index.ts new file mode 100644 index 000000000000..caeb029e037f --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/index.ts @@ -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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { SavedObjectsService, CoreSavedObjectsRouteHandlerContext } from './src'; +export type { + InternalSavedObjectsServiceStart, + InternalSavedObjectsServiceSetup, + InternalSavedObjectsRequestHandlerContext, + InternalSavedObjectRouter, +} from './src'; + +// only used by integration tests +export { registerDeleteUnknownTypesRoute } from './src/routes/deprecations'; +export { registerLegacyExportRoute } from './src/routes/legacy_import_export/export'; +export { registerLegacyImportRoute } from './src/routes/legacy_import_export/import'; +export { registerBulkCreateRoute } from './src/routes/bulk_create'; +export { registerBulkGetRoute } from './src/routes/bulk_get'; +export { registerBulkResolveRoute } from './src/routes/bulk_resolve'; +export { registerBulkUpdateRoute } from './src/routes/bulk_update'; +export { registerCreateRoute } from './src/routes/create'; +export { registerDeleteRoute } from './src/routes/delete'; +export { registerExportRoute } from './src/routes/export'; +export { registerFindRoute } from './src/routes/find'; +export { registerGetRoute } from './src/routes/get'; +export { registerImportRoute } from './src/routes/import'; +export { registerMigrateRoute } from './src/routes/migrate'; +export { registerResolveRoute } from './src/routes/resolve'; +export { registerResolveImportErrorsRoute } from './src/routes/resolve_import_errors'; +export { registerUpdateRoute } from './src/routes/update'; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/jest.config.js b/packages/core/saved-objects/core-saved-objects-server-internal/jest.config.js new file mode 100644 index 000000000000..7ef3739869d8 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-server-internal'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/package.json b/packages/core/saved-objects/core-saved-objects-server-internal/package.json new file mode 100644 index 000000000000..cd52a32958cc --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/saved_objects/deprecations/deprecation_factory.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/deprecation_factory.ts similarity index 93% rename from src/core/server/saved_objects/deprecations/deprecation_factory.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/deprecation_factory.ts index d330577151a5..3a363ea5a4c2 100644 --- a/src/core/server/saved_objects/deprecations/deprecation_factory.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/deprecation_factory.ts @@ -8,7 +8,7 @@ import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import type { RegisterDeprecationsConfig } from '../../deprecations'; +import type { RegisterDeprecationsConfig } from '@kbn/core-deprecations-server'; import { getUnknownTypesDeprecations } from './unknown_object_types'; interface GetDeprecationProviderOptions { diff --git a/src/core/server/saved_objects/deprecations/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/index.ts similarity index 100% rename from src/core/server/saved_objects/deprecations/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/index.ts diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.mocks.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.mocks.ts new file mode 100644 index 000000000000..d49c300680c0 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.mocks.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const getIndexForTypeMock = jest.fn(); + +jest.doMock('@kbn/core-saved-objects-base-server-internal', () => { + const actual = jest.requireActual('@kbn/core-saved-objects-base-server-internal'); + return { + ...actual, + getIndexForType: getIndexForTypeMock, + }; +}); diff --git a/src/core/server/saved_objects/deprecations/unknown_object_types.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.ts similarity index 85% rename from src/core/server/saved_objects/deprecations/unknown_object_types.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.ts index 7e02f3343050..2199a7fb32b5 100644 --- a/src/core/server/saved_objects/deprecations/unknown_object_types.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.test.ts @@ -8,11 +8,42 @@ import { getIndexForTypeMock } from './unknown_object_types.test.mocks'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import { deleteUnknownTypeObjects, getUnknownTypesDeprecations } from './unknown_object_types'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; -import { SavedObjectsType } from '../..'; -import { createAggregateTypesSearchResponse } from '../migrations/actions/check_for_unknown_docs.mocks'; +import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; + +const createAggregateTypesSearchResponse = ( + typesIds: Record = {} +): SearchResponse => { + return { + took: 0, + timed_out: false, + _shards: { + total: 1, + successful: 1, + skipped: 0, + failed: 0, + }, + hits: { + total: { + value: Object.keys(typesIds).length, + relation: 'eq', + }, + max_score: null, + hits: [], + }, + aggregations: { + typesAggregation: { + buckets: Object.entries(typesIds).map(([type, ids]) => ({ + key: type, + docs: { hits: { hits: ids.map((_id) => ({ _id })) } }, + })), + }, + }, + }; +}; describe('unknown saved object types deprecation', () => { const kibanaVersion = '8.0.0'; diff --git a/src/core/server/saved_objects/deprecations/unknown_object_types.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.ts similarity index 95% rename from src/core/server/saved_objects/deprecations/unknown_object_types.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.ts index fd636e0107cd..2149fd6cfaef 100644 --- a/src/core/server/saved_objects/deprecations/unknown_object_types.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/deprecations/unknown_object_types.ts @@ -10,9 +10,11 @@ import { i18n } from '@kbn/i18n'; import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import type { ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server'; -import { getAggregatedTypesDocuments } from '../migrations/actions/check_for_unknown_docs'; -import { addExcludedTypesToBoolQuery } from '../migrations/model/helpers'; -import { getIndexForType } from '../service/lib'; +import { getIndexForType } from '@kbn/core-saved-objects-base-server-internal'; +import { + getAggregatedTypesDocuments, + addExcludedTypesToBoolQuery, +} from '@kbn/core-saved-objects-migration-server-internal'; interface UnknownTypesDeprecationOptions { typeRegistry: ISavedObjectTypeRegistry; diff --git a/src/core/server/saved_objects/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts similarity index 74% rename from src/core/server/saved_objects/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts index 4ccc4f1bcdb3..d655be11f264 100644 --- a/src/core/server/saved_objects/index.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts @@ -6,19 +6,13 @@ * Side Public License, v 1. */ -export * from './service'; - -export { SavedObjectsImporter } from './import'; - -export type { SavedObjectsImportError } from './import'; - -export type { SavedObjectsExporter, SavedObjectsExportError } from './export'; - export { SavedObjectsService } from './saved_objects_service'; - export type { InternalSavedObjectsServiceStart, InternalSavedObjectsServiceSetup, } from './saved_objects_service'; - export { CoreSavedObjectsRouteHandlerContext } from './saved_objects_route_handler_context'; +export type { + InternalSavedObjectsRequestHandlerContext, + InternalSavedObjectRouter, +} from './internal_types'; diff --git a/src/core/server/saved_objects/internal_types.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/internal_types.ts similarity index 100% rename from src/core/server/saved_objects/internal_types.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/internal_types.ts diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/mocks/internal_mocks.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/mocks/internal_mocks.ts new file mode 100644 index 000000000000..db000cffc9e2 --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/mocks/internal_mocks.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { + DeprecationsServiceSetup, + DeprecationRegistryProvider, +} from '@kbn/core-deprecations-server'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; + +export const createDeprecationsSetupMock = () => { + const setupContract: jest.Mocked = { + registerDeprecations: jest.fn(), + }; + + return setupContract; +}; + +export const createDeprecationRegistryProviderMock = () => { + const internalSetupContract: jest.Mocked = { + getRegistry: jest.fn(), + }; + + internalSetupContract.getRegistry.mockReturnValue(createDeprecationsSetupMock()); + return internalSetupContract; +}; + +export const createCoreUsageDataSetupMock = () => { + const setupContract: jest.Mocked = { + registerType: jest.fn(), + getClient: jest.fn(), + registerUsageCounter: jest.fn(), + incrementUsageCounter: jest.fn(), + }; + return setupContract; +}; diff --git a/src/core/server/saved_objects/object_types/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/index.ts similarity index 100% rename from src/core/server/saved_objects/object_types/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/index.ts diff --git a/src/core/server/saved_objects/object_types/registration.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.test.ts similarity index 100% rename from src/core/server/saved_objects/object_types/registration.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.test.ts diff --git a/src/core/server/saved_objects/object_types/registration.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.ts similarity index 100% rename from src/core/server/saved_objects/object_types/registration.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.ts diff --git a/src/core/server/saved_objects/routes/bulk_create.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_create.ts similarity index 95% rename from src/core/server/saved_objects/routes/bulk_create.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_create.ts index 6a671c830ca6..4192e800e51d 100644 --- a/src/core/server/saved_objects/routes/bulk_create.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_create.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/bulk_get.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_get.ts similarity index 94% rename from src/core/server/saved_objects/routes/bulk_get.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_get.ts index ba485c832ca6..ec8d7a1c8420 100644 --- a/src/core/server/saved_objects/routes/bulk_get.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_get.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/bulk_resolve.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_resolve.ts similarity index 93% rename from src/core/server/saved_objects/routes/bulk_resolve.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_resolve.ts index e689e243ebc9..8947719bd2ab 100644 --- a/src/core/server/saved_objects/routes/bulk_resolve.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_resolve.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/bulk_update.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_update.ts similarity index 95% rename from src/core/server/saved_objects/routes/bulk_update.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_update.ts index 2edfa23ed878..dbe60203afdd 100644 --- a/src/core/server/saved_objects/routes/bulk_update.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/bulk_update.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/create.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/create.ts similarity index 96% rename from src/core/server/saved_objects/routes/create.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/create.ts index 282cbafc0b2f..2ef810ebebed 100644 --- a/src/core/server/saved_objects/routes/create.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/create.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/delete.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/delete.ts similarity index 94% rename from src/core/server/saved_objects/routes/delete.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/delete.ts index 7410a237d39f..bfef6deb885e 100644 --- a/src/core/server/saved_objects/routes/delete.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/delete.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/deprecations/delete_unknown_types.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/deprecations/delete_unknown_types.ts similarity index 100% rename from src/core/server/saved_objects/routes/deprecations/delete_unknown_types.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/deprecations/delete_unknown_types.ts diff --git a/src/core/server/saved_objects/routes/deprecations/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/deprecations/index.ts similarity index 100% rename from src/core/server/saved_objects/routes/deprecations/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/deprecations/index.ts diff --git a/src/core/server/saved_objects/routes/export.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/export.ts similarity index 97% rename from src/core/server/saved_objects/routes/export.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/export.ts index 0ab75a3c7101..1d8a55b9e3fd 100644 --- a/src/core/server/saved_objects/routes/export.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/export.ts @@ -16,8 +16,8 @@ import type { SavedObjectsExportByObjectOptions, } from '@kbn/core-saved-objects-server'; import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; -import { SavedObjectsExportError } from '../export'; +import { SavedObjectsExportError } from '@kbn/core-saved-objects-import-export-server-internal'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { validateTypes, validateObjects, catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/find.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/find.ts similarity index 97% rename from src/core/server/saved_objects/routes/find.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/find.ts index 7ebfef5be7c3..4587cb1ebeb0 100644 --- a/src/core/server/saved_objects/routes/find.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/find.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/get.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/get.ts similarity index 93% rename from src/core/server/saved_objects/routes/get.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/get.ts index e7a2a779c403..dbe2c1a4d9d8 100644 --- a/src/core/server/saved_objects/routes/get.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/get.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/import.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/import.ts similarity index 94% rename from src/core/server/saved_objects/routes/import.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/import.ts index 717cc50a13e6..8e8722ae588c 100644 --- a/src/core/server/saved_objects/routes/import.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/import.ts @@ -10,8 +10,8 @@ import { Readable } from 'stream'; import { extname } from 'path'; import { schema } from '@kbn/config-schema'; import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; -import { SavedObjectsImportError } from '../import'; +import { SavedObjectsImportError } from '@kbn/core-saved-objects-import-export-server-internal'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors, createSavedObjectsStreamFromNdJson } from './utils'; diff --git a/src/core/server/saved_objects/routes/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/index.ts similarity index 94% rename from src/core/server/saved_objects/routes/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/index.ts index f49c604a37c0..528793e8539b 100644 --- a/src/core/server/saved_objects/routes/index.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/index.ts @@ -8,9 +8,11 @@ import type { Logger } from '@kbn/logging'; import type { InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; -import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; -import { IKibanaMigrator } from '../migrations'; +import type { + SavedObjectConfig, + IKibanaMigrator, +} from '@kbn/core-saved-objects-base-server-internal'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectsRequestHandlerContext } from '../internal_types'; import { registerGetRoute } from './get'; import { registerResolveRoute } from './resolve'; diff --git a/src/core/server/saved_objects/routes/legacy_import_export/export.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/export.ts similarity index 95% rename from src/core/server/saved_objects/routes/legacy_import_export/export.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/export.ts index 9073090de8fe..3ccbee914e8b 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/export.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/export.ts @@ -9,7 +9,7 @@ import moment from 'moment'; import { schema } from '@kbn/config-schema'; import type { Logger } from '@kbn/logging'; -import { InternalCoreUsageDataSetup } from '../../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../../internal_types'; import { exportDashboards } from './lib'; diff --git a/src/core/server/saved_objects/routes/legacy_import_export/import.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts similarity index 93% rename from src/core/server/saved_objects/routes/legacy_import_export/import.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts index d4a13b297396..44ee99aa2c97 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/import.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/import.ts @@ -8,8 +8,8 @@ import { schema } from '@kbn/config-schema'; import type { Logger } from '@kbn/logging'; -import type { SavedObject } from '../../..'; -import { InternalCoreUsageDataSetup } from '../../../core_usage_data'; +import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../../internal_types'; import { importDashboards } from './lib'; diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts similarity index 98% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts index 257fa594d2bc..4470983fafc6 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts @@ -7,7 +7,7 @@ */ import type { SavedObject, SavedObjectAttributes } from '@kbn/core-saved-objects-common'; -import { savedObjectsClientMock } from '../../../../mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { collectReferencesDeep } from './collect_references_deep'; const data: Array> = [ diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts similarity index 89% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts index a02fc37e4b86..0c193f618624 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/lib/collect_references_deep.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { SavedObject, SavedObjectsClientContract } from '../../../..'; +import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; const MAX_BULK_GET_SIZE = 10000; diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/export_dashboards.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/export_dashboards.ts similarity index 90% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/export_dashboards.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/export_dashboards.ts index 9d0ed7889cdc..8b069ee31f91 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/lib/export_dashboards.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/export_dashboards.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { SavedObjectsClientContract } from '../../../..'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { collectReferencesDeep } from './collect_references_deep'; export async function exportDashboards( diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts similarity index 94% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts index 3d23fb1b9022..87452664ac51 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.test.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { savedObjectsClientMock } from '../../../../mocks'; -import { SavedObject } from '../../../..'; +import type { SavedObject } from '@kbn/core-saved-objects-common'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { importDashboards } from './import_dashboards'; describe('importDashboards(req)', () => { diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts similarity index 89% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts index 11192cc0ad2f..51a63f23322b 100644 --- a/src/core/server/saved_objects/routes/legacy_import_export/lib/import_dashboards.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { SavedObject, SavedObjectsClientContract } from '../../../..'; +import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; export async function importDashboards( savedObjectsClient: SavedObjectsClientContract, diff --git a/src/core/server/saved_objects/routes/legacy_import_export/lib/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/index.ts similarity index 100% rename from src/core/server/saved_objects/routes/legacy_import_export/lib/index.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/index.ts diff --git a/src/core/server/saved_objects/routes/migrate.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/migrate.ts similarity index 92% rename from src/core/server/saved_objects/routes/migrate.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/migrate.ts index 05579855cbfc..2222b17c4e6f 100644 --- a/src/core/server/saved_objects/routes/migrate.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/migrate.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { IKibanaMigrator } from '../migrations'; +import type { IKibanaMigrator } from '@kbn/core-saved-objects-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/resolve.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve.ts similarity index 93% rename from src/core/server/saved_objects/routes/resolve.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve.ts index b0a7153e8d22..a1804c1fa317 100644 --- a/src/core/server/saved_objects/routes/resolve.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve.ts @@ -7,7 +7,7 @@ */ import { schema } from '@kbn/config-schema'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; interface RouteDependencies { diff --git a/src/core/server/saved_objects/routes/resolve_import_errors.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve_import_errors.ts similarity index 95% rename from src/core/server/saved_objects/routes/resolve_import_errors.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve_import_errors.ts index ed919693e1b8..26380bd2aea8 100644 --- a/src/core/server/saved_objects/routes/resolve_import_errors.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/resolve_import_errors.ts @@ -11,8 +11,8 @@ import { Readable } from 'stream'; import { chain } from 'lodash'; import { schema } from '@kbn/config-schema'; import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; -import { SavedObjectsImportError } from '../import'; +import { SavedObjectsImportError } from '@kbn/core-saved-objects-import-export-server-internal'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors, createSavedObjectsStreamFromNdJson } from './utils'; diff --git a/src/core/server/saved_objects/routes/update.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/update.ts similarity index 95% rename from src/core/server/saved_objects/routes/update.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/update.ts index 0d9e4b9cdcf4..463b5465b53a 100644 --- a/src/core/server/saved_objects/routes/update.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/update.ts @@ -8,7 +8,7 @@ import { schema } from '@kbn/config-schema'; import type { SavedObjectsUpdateOptions } from '@kbn/core-saved-objects-api-server'; -import { InternalCoreUsageDataSetup } from '../../core_usage_data'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import type { InternalSavedObjectRouter } from '../internal_types'; import { catchAndReturnBoomErrors } from './utils'; diff --git a/src/core/server/saved_objects/routes/utils.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.test.ts similarity index 100% rename from src/core/server/saved_objects/routes/utils.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.test.ts diff --git a/src/core/server/saved_objects/routes/utils.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts similarity index 92% rename from src/core/server/saved_objects/routes/utils.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts index 54a15f599c30..463d59baf620 100644 --- a/src/core/server/saved_objects/routes/utils.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/utils.ts @@ -16,7 +16,9 @@ import { createConcatStream, } from '@kbn/utils'; import Boom from '@hapi/boom'; -import { RequestHandlerWrapper, SavedObject, SavedObjectsExportResultDetails } from '../..'; +import type { RequestHandlerWrapper } from '@kbn/core-http-server'; +import type { SavedObject } from '@kbn/core-saved-objects-common'; +import type { SavedObjectsExportResultDetails } from '@kbn/core-saved-objects-server'; export async function createSavedObjectsStreamFromNdJson(ndJsonStream: Readable) { const savedObjects = await createPromiseFromStreams([ diff --git a/src/core/server/saved_objects/saved_objects_route_handler_context.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_route_handler_context.ts similarity index 100% rename from src/core/server/saved_objects/saved_objects_route_handler_context.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_route_handler_context.ts diff --git a/src/core/server/saved_objects/saved_objects_service.test.mocks.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.mocks.ts similarity index 55% rename from src/core/server/saved_objects/saved_objects_service.test.mocks.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.mocks.ts index 4b66f5865def..54090e9fb1b1 100644 --- a/src/core/server/saved_objects/saved_objects_service.test.mocks.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.mocks.ts @@ -6,20 +6,36 @@ * Side Public License, v 1. */ -import { mockKibanaMigrator } from './migrations/kibana_migrator.mock'; -import { savedObjectsClientProviderMock } from './service/lib/scoped_client_provider.mock'; +import { mockKibanaMigrator } from '@kbn/core-saved-objects-migration-server-mocks'; +import { + savedObjectsClientProviderMock, + savedObjectsRepositoryMock, +} from '@kbn/core-saved-objects-api-server-mocks'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; export const migratorInstanceMock = mockKibanaMigrator.create(); export const KibanaMigratorMock = jest.fn().mockImplementation(() => migratorInstanceMock); -jest.doMock('./migrations/kibana_migrator', () => ({ - KibanaMigrator: KibanaMigratorMock, -})); +jest.doMock('@kbn/core-saved-objects-migration-server-internal', () => { + const actual = jest.requireActual('@kbn/core-saved-objects-migration-server-internal'); + return { + ...actual, + KibanaMigrator: KibanaMigratorMock, + }; +}); export const clientProviderInstanceMock = savedObjectsClientProviderMock.create(); -jest.doMock('./service/lib/scoped_client_provider', () => ({ - SavedObjectsClientProvider: jest.fn().mockImplementation(() => clientProviderInstanceMock), -})); +export const repositoryMock = savedObjectsRepositoryMock.create(); + +jest.doMock('@kbn/core-saved-objects-api-server-internal', () => { + const actual = jest.requireActual('@kbn/core-saved-objects-api-server-internal'); + return { + ...actual, + SavedObjectsRepository: { + createRepository: jest.fn().mockImplementation(() => repositoryMock), + }, + SavedObjectsClientProvider: jest.fn().mockImplementation(() => clientProviderInstanceMock), + }; +}); export const typeRegistryInstanceMock = typeRegistryMock.create(); jest.doMock('@kbn/core-saved-objects-base-server-internal', () => { diff --git a/src/core/server/saved_objects/saved_objects_service.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.ts similarity index 96% rename from src/core/server/saved_objects/saved_objects_service.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.ts index a862aa1e039e..e906f119a657 100644 --- a/src/core/server/saved_objects/saved_objects_service.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.test.ts @@ -26,26 +26,30 @@ import { docLinksServiceMock } from '@kbn/core-doc-links-server-mocks'; import { mockCoreContext } from '@kbn/core-base-server-mocks'; import { httpServiceMock, httpServerMock } from '@kbn/core-http-server-mocks'; import type { SavedObjectsClientFactoryProvider } from '@kbn/core-saved-objects-server'; +import { configServiceMock } from '@kbn/config-mocks'; +import type { NodesVersionCompatibility } from '@kbn/core-elasticsearch-server-internal'; +import { SavedObjectsRepository } from '@kbn/core-saved-objects-api-server-internal'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { SavedObjectsService } from './saved_objects_service'; -import { configServiceMock } from '../mocks'; -import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; -import { coreUsageDataServiceMock } from '../core_usage_data/core_usage_data_service.mock'; -import { deprecationsServiceMock } from '../deprecations/deprecations_service.mock'; -import type { NodesVersionCompatibility } from '@kbn/core-elasticsearch-server-internal'; -import { SavedObjectsRepository } from './service/lib/repository'; + +import { + createDeprecationsSetupMock, + createDeprecationRegistryProviderMock, + createCoreUsageDataSetupMock, +} from './mocks/internal_mocks'; + import { registerCoreObjectTypes } from './object_types'; import { getSavedObjectsDeprecationsProvider } from './deprecations'; -jest.mock('./service/lib/repository'); jest.mock('./object_types'); jest.mock('./deprecations'); describe('SavedObjectsService', () => { - let deprecationsSetup: ReturnType; + let deprecationsSetup: ReturnType; beforeEach(() => { - deprecationsSetup = deprecationsServiceMock.createInternalSetupContract(); + deprecationsSetup = createDeprecationRegistryProviderMock(); }); const createCoreContext = ({ @@ -71,7 +75,7 @@ describe('SavedObjectsService', () => { http: httpServiceMock.createInternalSetupContract(), elasticsearch: elasticsearchMock, deprecations: deprecationsSetup, - coreUsageData: coreUsageDataServiceMock.createSetupContract(), + coreUsageData: createCoreUsageDataSetupMock(), }; }; @@ -102,7 +106,7 @@ describe('SavedObjectsService', () => { const coreContext = createCoreContext(); const soService = new SavedObjectsService(coreContext); - const mockRegistry = deprecationsServiceMock.createSetupContract(); + const mockRegistry = createDeprecationsSetupMock(); deprecationsSetup.getRegistry.mockReturnValue(mockRegistry); const deprecations = Symbol('deprecations'); diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts similarity index 94% rename from src/core/server/saved_objects/saved_objects_service.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts index 542a13e3a4cc..c158bb758f62 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts @@ -9,6 +9,7 @@ import { Subject, Observable, firstValueFrom } from 'rxjs'; import { filter, take, switchMap } from 'rxjs/operators'; import type { Logger } from '@kbn/logging'; +import type { ServiceStatus } from '@kbn/core-base-common'; import type { CoreContext, CoreService } from '@kbn/core-base-server-internal'; import type { DocLinksServiceStart } from '@kbn/core-doc-links-server'; import type { KibanaRequest } from '@kbn/core-http-server'; @@ -33,16 +34,21 @@ import { SavedObjectTypeRegistry, type SavedObjectsConfigType, type SavedObjectsMigrationConfigType, + type IKibanaMigrator, } from '@kbn/core-saved-objects-base-server-internal'; -import { SavedObjectsClient, SavedObjectsClientProvider } from './service'; -import { KibanaMigrator, IKibanaMigrator } from './migrations'; -import { InternalCoreUsageDataSetup } from '../core_usage_data'; -import { InternalDeprecationsServiceSetup } from '../deprecations'; -import { SavedObjectsRepository } from './service/lib/repository'; -import { SavedObjectsExporter } from './export'; -import { SavedObjectsImporter } from './import'; +import { + SavedObjectsClient, + SavedObjectsClientProvider, +} from '@kbn/core-saved-objects-api-server-internal'; +import { KibanaMigrator } from '@kbn/core-saved-objects-migration-server-internal'; +import { SavedObjectsRepository } from '@kbn/core-saved-objects-api-server-internal'; +import { + SavedObjectsExporter, + SavedObjectsImporter, +} from '@kbn/core-saved-objects-import-export-server-internal'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; +import type { DeprecationRegistryProvider } from '@kbn/core-deprecations-server'; import { registerRoutes } from './routes'; -import { ServiceStatus } from '../status'; import { calculateStatus$ } from './status'; import { registerCoreObjectTypes } from './object_types'; import { getSavedObjectsDeprecationsProvider } from './deprecations'; @@ -65,7 +71,7 @@ export interface SavedObjectsSetupDeps { http: InternalHttpServiceSetup; elasticsearch: InternalElasticsearchServiceSetup; coreUsageData: InternalCoreUsageDataSetup; - deprecations: InternalDeprecationsServiceSetup; + deprecations: DeprecationRegistryProvider; } interface WrappedClientFactoryWrapper { diff --git a/src/core/server/saved_objects/status.test.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/status.test.ts similarity index 98% rename from src/core/server/saved_objects/status.test.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/status.test.ts index c830383c6eb6..3565ab406feb 100644 --- a/src/core/server/saved_objects/status.test.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/status.test.ts @@ -7,7 +7,7 @@ */ import { of, Observable } from 'rxjs'; -import { ServiceStatus, ServiceStatusLevels } from '../status'; +import { type ServiceStatus, ServiceStatusLevels } from '@kbn/core-base-common'; import { calculateStatus$ } from './status'; import { take } from 'rxjs/operators'; diff --git a/src/core/server/saved_objects/status.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/status.ts similarity index 94% rename from src/core/server/saved_objects/status.ts rename to packages/core/saved-objects/core-saved-objects-server-internal/src/status.ts index 03f429dce62b..65c7b2187488 100644 --- a/src/core/server/saved_objects/status.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/status.ts @@ -8,9 +8,9 @@ import { Observable, combineLatest } from 'rxjs'; import { startWith, map } from 'rxjs/operators'; +import { type ServiceStatus, ServiceStatusLevels } from '@kbn/core-base-common'; import type { SavedObjectStatusMeta } from '@kbn/core-saved-objects-server'; -import { ServiceStatus, ServiceStatusLevels } from '../status'; -import { KibanaMigratorStatus } from './migrations'; +import type { KibanaMigratorStatus } from '@kbn/core-saved-objects-base-server-internal'; export const calculateStatus$ = ( rawMigratorStatus$: Observable, diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/BUILD.bazel b/packages/core/saved-objects/core-saved-objects-server-mocks/BUILD.bazel new file mode 100644 index 000000000000..2720f07e77aa --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/BUILD.bazel @@ -0,0 +1,120 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-saved-objects-server-mocks" +PKG_REQUIRE_NAME = "@kbn/core-saved-objects-server-mocks" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/core/base/core-base-common", + "//packages/core/saved-objects/core-saved-objects-api-server-mocks", + "//packages/core/saved-objects/core-saved-objects-base-server-mocks", + "//packages/core/saved-objects/core-saved-objects-import-export-server-mocks", + "//packages/core/saved-objects/core-saved-objects-migration-server-mocks", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/kbn-utility-types:npm_module_types", + "//packages/core/base/core-base-common:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server-internal:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-api-server-mocks:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-base-server-mocks:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-import-export-server-mocks:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-migration-server-mocks:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/README.md b/packages/core/saved-objects/core-saved-objects-server-mocks/README.md new file mode 100644 index 000000000000..9b00d3abd25e --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/README.md @@ -0,0 +1,5 @@ +# @kbn/core-saved-objects-server-mocks + +This package contains the mocks for core's server-side savedObjects service. +- savedObjectsServiceMock + diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/index.ts b/packages/core/saved-objects/core-saved-objects-server-mocks/index.ts new file mode 100644 index 000000000000..c130553aba7c --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsServiceMock } from './src'; diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/jest.config.js b/packages/core/saved-objects/core-saved-objects-server-mocks/jest.config.js new file mode 100644 index 000000000000..95cc344bb33a --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/saved-objects/core-saved-objects-server-mocks'], +}; diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/package.json b/packages/core/saved-objects/core-saved-objects-server-mocks/package.json new file mode 100644 index 000000000000..1bbda68c5d8e --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-saved-objects-server-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/src/index.ts b/packages/core/saved-objects/core-saved-objects-server-mocks/src/index.ts new file mode 100644 index 000000000000..eb6cf3d8deec --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { savedObjectsServiceMock } from './saved_objects_service.mock'; diff --git a/src/core/server/saved_objects/saved_objects_service.mock.ts b/packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts similarity index 89% rename from src/core/server/saved_objects/saved_objects_service.mock.ts rename to packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts index f1a1ce6c091b..3b06cc2c6f3c 100644 --- a/src/core/server/saved_objects/saved_objects_service.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts @@ -8,6 +8,7 @@ import { BehaviorSubject } from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; +import { ServiceStatusLevels } from '@kbn/core-base-common'; import type { SavedObjectsServiceSetup, SavedObjectsServiceStart, @@ -17,15 +18,17 @@ import type { SavedObjectsService, InternalSavedObjectsServiceSetup, InternalSavedObjectsServiceStart, -} from './saved_objects_service'; - -import { savedObjectsRepositoryMock } from './service/lib/repository.mock'; -import { savedObjectsClientMock } from './service/saved_objects_client.mock'; +} from '@kbn/core-saved-objects-server-internal'; +import { + savedObjectsRepositoryMock, + savedObjectsClientMock, +} from '@kbn/core-saved-objects-api-server-mocks'; import { typeRegistryMock, serializerMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { savedObjectsExporterMock } from './export/saved_objects_exporter.mock'; -import { savedObjectsImporterMock } from './import/saved_objects_importer.mock'; -import { migrationMocks } from './migrations/mocks'; -import { ServiceStatusLevels } from '../status'; +import { + savedObjectsExporterMock, + savedObjectsImporterMock, +} from '@kbn/core-saved-objects-import-export-server-mocks'; +import { migrationMocks } from '@kbn/core-saved-objects-migration-server-mocks'; type SavedObjectsServiceContract = PublicMethodsOf; diff --git a/packages/core/saved-objects/core-saved-objects-server-mocks/tsconfig.json b/packages/core/saved-objects/core-saved-objects-server-mocks/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-mocks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/saved-objects/core-saved-objects-utils-server/package.json b/packages/core/saved-objects/core-saved-objects-utils-server/package.json index 13220da37326..eb223e7f49eb 100644 --- a/packages/core/saved-objects/core-saved-objects-utils-server/package.json +++ b/packages/core/saved-objects/core-saved-objects-utils-server/package.json @@ -3,5 +3,6 @@ "private": true, "version": "1.0.0", "main": "./target_node/index.js", + "author": "Kibana Core", "license": "SSPL-1.0 OR Elastic License 2.0" } diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/BUILD.bazel b/packages/core/usage-data/core-usage-data-base-server-internal/BUILD.bazel new file mode 100644 index 000000000000..62219c02bc49 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/BUILD.bazel @@ -0,0 +1,109 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-usage-data-base-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-usage-data-base-server-internal" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/core/http/core-http-server:npm_module_types", + "//packages/core/usage-data/core-usage-data-server:npm_module_types", + "//packages/core/saved-objects/core-saved-objects-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/README.md b/packages/core/usage-data/core-usage-data-base-server-internal/README.md new file mode 100644 index 000000000000..f450b220596c --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/README.md @@ -0,0 +1,6 @@ +# @kbn/core-usage-data-base-server-internal + +This package contains internal base types and constants for Core's server-side `usage-data` domain that are used +across some other domains. + +The purpose of the package is mostly to break the cyclic dependency between the `core-usage-data` and `savedObjects` services. \ No newline at end of file diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/index.ts b/packages/core/usage-data/core-usage-data-base-server-internal/index.ts new file mode 100644 index 000000000000..cfba715ed255 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + REPOSITORY_RESOLVE_OUTCOME_STATS, +} from './src'; +export type { + InternalCoreUsageDataSetup, + ICoreUsageStatsClient, + BaseIncrementOptions, + IncrementSavedObjectsImportOptions, + IncrementSavedObjectsResolveImportErrorsOptions, + IncrementSavedObjectsExportOptions, +} from './src'; diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/jest.config.js b/packages/core/usage-data/core-usage-data-base-server-internal/jest.config.js new file mode 100644 index 000000000000..60d4c422fc0e --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/usage-data/core-usage-data-base-server-internal'], +}; diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/package.json b/packages/core/usage-data/core-usage-data-base-server-internal/package.json new file mode 100644 index 000000000000..837a01d45b38 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-usage-data-base-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/src/constants.ts b/packages/core/usage-data/core-usage-data-base-server-internal/src/constants.ts new file mode 100644 index 000000000000..90914c7bb2c3 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/src/constants.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** @internal */ +export const CORE_USAGE_STATS_TYPE = 'core-usage-stats'; + +/** @internal */ +export const CORE_USAGE_STATS_ID = 'core-usage-stats'; + +/** @internal */ +export const REPOSITORY_RESOLVE_OUTCOME_STATS = { + EXACT_MATCH: 'savedObjectsRepository.resolvedOutcome.exactMatch', + ALIAS_MATCH: 'savedObjectsRepository.resolvedOutcome.aliasMatch', + CONFLICT: 'savedObjectsRepository.resolvedOutcome.conflict', + NOT_FOUND: 'savedObjectsRepository.resolvedOutcome.notFound', + TOTAL: 'savedObjectsRepository.resolvedOutcome.total', +}; diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/src/index.ts b/packages/core/usage-data/core-usage-data-base-server-internal/src/index.ts new file mode 100644 index 000000000000..a078705c574a --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/src/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + REPOSITORY_RESOLVE_OUTCOME_STATS, +} from './constants'; +export type { + ICoreUsageStatsClient, + BaseIncrementOptions, + IncrementSavedObjectsImportOptions, + IncrementSavedObjectsExportOptions, + IncrementSavedObjectsResolveImportErrorsOptions, +} from './usage_stats_client'; +export type { InternalCoreUsageDataSetup } from './internal_contract'; diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/src/internal_contract.ts b/packages/core/usage-data/core-usage-data-base-server-internal/src/internal_contract.ts new file mode 100644 index 000000000000..48407068b665 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/src/internal_contract.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { ISavedObjectTypeRegistry, SavedObjectsType } from '@kbn/core-saved-objects-server'; +import type { CoreUsageDataSetup, CoreIncrementUsageCounter } from '@kbn/core-usage-data-server'; +import type { ICoreUsageStatsClient } from './usage_stats_client'; + +type SavedObjectTypeRegistry = ISavedObjectTypeRegistry & { + registerType(type: SavedObjectsType): void; +}; + +/** @internal */ +export interface InternalCoreUsageDataSetup extends CoreUsageDataSetup { + registerType(typeRegistry: SavedObjectTypeRegistry): void; + + getClient(): ICoreUsageStatsClient; + + /** @internal {@link CoreIncrementUsageCounter} **/ + incrementUsageCounter: CoreIncrementUsageCounter; +} diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/src/usage_stats_client.ts b/packages/core/usage-data/core-usage-data-base-server-internal/src/usage_stats_client.ts new file mode 100644 index 000000000000..3a603ebfdf5f --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/src/usage_stats_client.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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { KibanaRequest } from '@kbn/core-http-server'; +import type { CoreUsageStats } from '@kbn/core-usage-data-server'; + +/** @internal */ +export interface BaseIncrementOptions { + request: KibanaRequest; +} + +/** @internal */ +export type IncrementSavedObjectsImportOptions = BaseIncrementOptions & { + overwrite: boolean; + createNewCopies: boolean; +}; + +/** @internal */ +export type IncrementSavedObjectsResolveImportErrorsOptions = BaseIncrementOptions & { + createNewCopies: boolean; +}; + +/** @internal */ +export type IncrementSavedObjectsExportOptions = BaseIncrementOptions & { + types?: string[]; + supportedTypes: string[]; +}; + +/** @internal */ +export interface ICoreUsageStatsClient { + getUsageStats(): Promise; + + incrementSavedObjectsBulkCreate(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsBulkGet(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsBulkResolve(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsBulkUpdate(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsCreate(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsDelete(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsFind(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsGet(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsResolve(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsUpdate(options: BaseIncrementOptions): Promise; + + incrementSavedObjectsImport(options: IncrementSavedObjectsImportOptions): Promise; + + incrementSavedObjectsResolveImportErrors( + options: IncrementSavedObjectsResolveImportErrorsOptions + ): Promise; + + incrementSavedObjectsExport(options: IncrementSavedObjectsExportOptions): Promise; + + incrementLegacyDashboardsImport(options: BaseIncrementOptions): Promise; + + incrementLegacyDashboardsExport(options: BaseIncrementOptions): Promise; +} diff --git a/packages/core/usage-data/core-usage-data-base-server-internal/tsconfig.json b/packages/core/usage-data/core-usage-data-base-server-internal/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/usage-data/core-usage-data-base-server-internal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/packages/core/usage-data/core-usage-data-server/BUILD.bazel b/packages/core/usage-data/core-usage-data-server/BUILD.bazel new file mode 100644 index 000000000000..1e349174279e --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/BUILD.bazel @@ -0,0 +1,106 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-usage-data-server" +PKG_REQUIRE_NAME = "@kbn/core-usage-data-server" + +SOURCE_FILES = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__", + "**/integration_tests", + "**/mocks", + "**/scripts", + "**/storybook", + "**/test_fixtures", + "**/test_helpers", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + declaration_map = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = ".", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/usage-data/core-usage-data-server/README.md b/packages/core/usage-data/core-usage-data-server/README.md new file mode 100644 index 000000000000..049065b0e04e --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/README.md @@ -0,0 +1,3 @@ +# @kbn/core-usage-data-server + +This package contains public types for Core's server-side `usage-data` domain. diff --git a/packages/core/usage-data/core-usage-data-server/index.ts b/packages/core/usage-data/core-usage-data-server/index.ts new file mode 100644 index 000000000000..6c14ff3d1156 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + CoreUsageDataSetup, + CoreUsageDataStart, + CoreUsageCounter, + CoreIncrementUsageCounter, + ConfigUsageData, + CoreEnvironmentUsageData, + CoreIncrementCounterParams, + CoreUsageData, + CoreConfigUsageData, + CoreServicesUsageData, + CoreUsageStats, +} from './src'; diff --git a/packages/core/usage-data/core-usage-data-server/jest.config.js b/packages/core/usage-data/core-usage-data-server/jest.config.js new file mode 100644 index 000000000000..9e9c85037852 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/usage-data/core-usage-data-server'], +}; diff --git a/packages/core/usage-data/core-usage-data-server/package.json b/packages/core/usage-data/core-usage-data-server/package.json new file mode 100644 index 000000000000..e271128d733c --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-usage-data-server", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "author": "Kibana Core", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts b/packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts new file mode 100644 index 000000000000..685a86390a6b --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts @@ -0,0 +1,148 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Usage data from Core services + * @public + */ +export interface CoreServicesUsageData { + savedObjects: { + // scripts/telemetry_check.js does not support parsing Array<{...}> types + // so we have to disable eslint here and use {...}[] + // eslint-disable-next-line @typescript-eslint/array-type + indices: { + alias: string; + docsCount: number; + docsDeleted: number; + storeSizeBytes: number; + primaryStoreSizeBytes: number; + savedObjectsDocsCount: number; + }[]; + legacyUrlAliases: { + activeCount: number; + inactiveCount: number; + disabledCount: number; + totalCount: number; + }; + }; +} + +/** + * Usage data on this Kibana node's runtime environment. + * @public + */ +export interface CoreEnvironmentUsageData { + memory: { + heapTotalBytes: number; + heapUsedBytes: number; + /** V8 heap size limit */ + heapSizeLimit: number; + }; +} + +/** + * Usage data on this cluster's configuration of Core features + * @public + */ +export interface CoreConfigUsageData { + elasticsearch: { + sniffOnStart: boolean; + sniffIntervalMs?: number; + sniffOnConnectionFault: boolean; + numberOfHostsConfigured: number; + requestHeadersWhitelistConfigured: boolean; + customHeadersConfigured: boolean; + shardTimeoutMs: number; + requestTimeoutMs: number; + pingTimeoutMs: number; + logQueries: boolean; + ssl: { + verificationMode: 'none' | 'certificate' | 'full'; + certificateAuthoritiesConfigured: boolean; + certificateConfigured: boolean; + keyConfigured: boolean; + keystoreConfigured: boolean; + truststoreConfigured: boolean; + alwaysPresentCertificate: boolean; + }; + apiVersion: string; + healthCheckDelayMs: number; + principal: + | 'elastic_user' + | 'kibana_user' + | 'kibana_system_user' + | 'other_user' + | 'kibana_service_account' + | 'unknown'; + }; + + http: { + basePathConfigured: boolean; + maxPayloadInBytes: number; + rewriteBasePath: boolean; + keepaliveTimeout: number; + socketTimeout: number; + compression: { + enabled: boolean; + referrerWhitelistConfigured: boolean; + }; + xsrf: { + disableProtection: boolean; + allowlistConfigured: boolean; + }; + requestId: { + allowFromAnyIp: boolean; + ipAllowlistConfigured: boolean; + }; + ssl: { + certificateAuthoritiesConfigured: boolean; + certificateConfigured: boolean; + cipherSuites: string[]; + keyConfigured: boolean; + keystoreConfigured: boolean; + truststoreConfigured: boolean; + redirectHttpFromPortConfigured: boolean; + supportedProtocols: string[]; + clientAuthentication: 'none' | 'optional' | 'required'; + }; + securityResponseHeaders: { + strictTransportSecurity: string; + xContentTypeOptions: string; + referrerPolicy: string; + permissionsPolicyConfigured: boolean; + disableEmbedding: boolean; + }; + }; + + logging: { + appendersTypesUsed: string[]; + loggersConfiguredCount: number; + }; + + // plugins: { + // /** list of built-in plugins that are disabled */ + // firstPartyDisabled: string[]; + // /** list of third-party plugins that are installed and enabled */ + // thirdParty: string[]; + // }; + + savedObjects: { + customIndex: boolean; + maxImportPayloadBytes: number; + maxImportExportSize: number; + }; + + // uiSettings: { + // overridesCount: number; + // }; + + deprecatedKeys: { + set: string[]; + unset: string[]; + }; +} diff --git a/packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts b/packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts new file mode 100644 index 000000000000..aef5b657fb6f --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts @@ -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 + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * @public + * + * CoreUsageStats are collected over time while Kibana is running. This is related to CoreUsageData, which is a superset of this that also + * includes point-in-time configuration information. + * */ +export interface CoreUsageStats { + // Saved Objects Client APIs + 'apiCalls.savedObjectsBulkCreate.total'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.default.total'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.custom.total'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkGet.total'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.default.total'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.custom.total'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkResolve.total'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.default.total'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.custom.total'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkUpdate.total'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.default.total'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.custom.total'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsCreate.total'?: number; + 'apiCalls.savedObjectsCreate.namespace.default.total'?: number; + 'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsCreate.namespace.custom.total'?: number; + 'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsDelete.total'?: number; + 'apiCalls.savedObjectsDelete.namespace.default.total'?: number; + 'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsDelete.namespace.custom.total'?: number; + 'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsFind.total'?: number; + 'apiCalls.savedObjectsFind.namespace.default.total'?: number; + 'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsFind.namespace.custom.total'?: number; + 'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsGet.total'?: number; + 'apiCalls.savedObjectsGet.namespace.default.total'?: number; + 'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsGet.namespace.custom.total'?: number; + 'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsResolve.total'?: number; + 'apiCalls.savedObjectsResolve.namespace.default.total'?: number; + 'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsResolve.namespace.custom.total'?: number; + 'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsUpdate.total'?: number; + 'apiCalls.savedObjectsUpdate.namespace.default.total'?: number; + 'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsUpdate.namespace.custom.total'?: number; + 'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.no'?: number; + // Saved Objects Management APIs + 'apiCalls.savedObjectsImport.total'?: number; + 'apiCalls.savedObjectsImport.namespace.default.total'?: number; + 'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsImport.namespace.custom.total'?: number; + 'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.yes'?: number; + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.no'?: number; + 'apiCalls.savedObjectsImport.overwriteEnabled.yes'?: number; + 'apiCalls.savedObjectsImport.overwriteEnabled.no'?: number; + 'apiCalls.savedObjectsResolveImportErrors.total'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.default.total'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.custom.total'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes'?: number; + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no'?: number; + 'apiCalls.savedObjectsExport.total'?: number; + 'apiCalls.savedObjectsExport.namespace.default.total'?: number; + 'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsExport.namespace.custom.total'?: number; + 'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsExport.allTypesSelected.yes'?: number; + 'apiCalls.savedObjectsExport.allTypesSelected.no'?: number; + // Legacy Dashboard Import/Export API + 'apiCalls.legacyDashboardExport.total'?: number; + 'apiCalls.legacyDashboardExport.namespace.default.total'?: number; + 'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.legacyDashboardExport.namespace.custom.total'?: number; + 'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.no'?: number; + 'apiCalls.legacyDashboardImport.total'?: number; + 'apiCalls.legacyDashboardImport.namespace.default.total'?: number; + 'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.yes'?: number; + 'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.no'?: number; + 'apiCalls.legacyDashboardImport.namespace.custom.total'?: number; + 'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.yes'?: number; + 'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.no'?: number; + // Saved Objects Repository counters + 'savedObjectsRepository.resolvedOutcome.exactMatch'?: number; + 'savedObjectsRepository.resolvedOutcome.aliasMatch'?: number; + 'savedObjectsRepository.resolvedOutcome.conflict'?: number; + 'savedObjectsRepository.resolvedOutcome.notFound'?: number; + 'savedObjectsRepository.resolvedOutcome.total'?: number; +} diff --git a/packages/core/usage-data/core-usage-data-server/src/index.ts b/packages/core/usage-data/core-usage-data-server/src/index.ts new file mode 100644 index 000000000000..92bda0c83491 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/src/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + CoreServicesUsageData, + CoreEnvironmentUsageData, + CoreConfigUsageData, +} from './core_usage_data'; +export type { CoreUsageStats } from './core_usage_stats'; +export type { + CoreUsageDataSetup, + CoreUsageCounter, + CoreIncrementUsageCounter, + CoreIncrementCounterParams, +} from './setup_contract'; +export type { CoreUsageData, ConfigUsageData, CoreUsageDataStart } from './start_contract'; diff --git a/packages/core/usage-data/core-usage-data-server/src/setup_contract.ts b/packages/core/usage-data/core-usage-data-server/src/setup_contract.ts new file mode 100644 index 000000000000..2acf70f323ef --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/src/setup_contract.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Internal API for registering the Usage Tracker used for Core's usage data payload. + * + * @note This API should never be used to drive application logic and is only + * intended for telemetry purposes. + * + * @public + */ +export interface CoreUsageDataSetup { + /** + * API for a usage tracker plugin to inject the {@link CoreUsageCounter} to use + * when tracking events. + */ + registerUsageCounter: (usageCounter: CoreUsageCounter) => void; +} + +/** + * @public + * API to track whenever an event occurs, so the core can report them. + */ +export interface CoreUsageCounter { + /** @internal {@link CoreIncrementUsageCounter} **/ + incrementCounter: CoreIncrementUsageCounter; +} + +/** + * @public Details about the counter to be incremented + */ +export interface CoreIncrementCounterParams { + /** The name of the counter **/ + counterName: string; + /** The counter type ("count" by default) **/ + counterType?: string; + /** Increment the counter by this number (1 if not specified) **/ + incrementBy?: number; +} + +/** + * @public + * Method to call whenever an event occurs, so the counter can be increased. + */ +export type CoreIncrementUsageCounter = (params: CoreIncrementCounterParams) => void; diff --git a/packages/core/usage-data/core-usage-data-server/src/start_contract.ts b/packages/core/usage-data/core-usage-data-server/src/start_contract.ts new file mode 100644 index 000000000000..bede0df2c575 --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/src/start_contract.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { CoreUsageStats } from './core_usage_stats'; +import type { + CoreConfigUsageData, + CoreEnvironmentUsageData, + CoreServicesUsageData, +} from './core_usage_data'; + +/** + * Internal API for getting Core's usage data payload. + * + * @note This API should never be used to drive application logic and is only + * intended for telemetry purposes. + * + * @public + */ +export interface CoreUsageDataStart { + /** + * Internal API for getting Core's usage data payload. + * + * @note This API should never be used to drive application logic and is only + * intended for telemetry purposes. + * + * @internal + * */ + getCoreUsageData(): Promise; + + getConfigsUsageData(): Promise; +} + +/** + * Type describing Core's usage data payload + * @public + */ +export interface CoreUsageData extends CoreUsageStats { + config: CoreConfigUsageData; + services: CoreServicesUsageData; + environment: CoreEnvironmentUsageData; +} + +/** + * Type describing Core's usage data payload + * @public + */ +export type ConfigUsageData = Record; diff --git a/packages/core/usage-data/core-usage-data-server/tsconfig.json b/packages/core/usage-data/core-usage-data-server/tsconfig.json new file mode 100644 index 000000000000..ff8b3da96b4d --- /dev/null +++ b/packages/core/usage-data/core-usage-data-server/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": ".", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ] +} diff --git a/src/core/server/core_route_handler_context.ts b/src/core/server/core_route_handler_context.ts index d0285469b664..50844d0ccfcd 100644 --- a/src/core/server/core_route_handler_context.ts +++ b/src/core/server/core_route_handler_context.ts @@ -10,7 +10,7 @@ import type { KibanaRequest } from '@kbn/core-http-server'; import type { ElasticsearchRequestHandlerContext } from '@kbn/core-elasticsearch-server'; import { CoreElasticsearchRouteHandlerContext } from '@kbn/core-elasticsearch-server-internal'; import type { SavedObjectsRequestHandlerContext } from '@kbn/core-saved-objects-server'; -import { CoreSavedObjectsRouteHandlerContext } from './saved_objects'; +import { CoreSavedObjectsRouteHandlerContext } from '@kbn/core-saved-objects-server-internal'; import { CoreUiSettingsRouteHandlerContext, UiSettingsRequestHandlerContext } from './ui_settings'; import { CoreDeprecationsRouteHandlerContext, diff --git a/src/core/server/core_usage_data/core_usage_data_service.mock.ts b/src/core/server/core_usage_data/core_usage_data_service.mock.ts index fd8f219fb2d5..7c887e4a9394 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.mock.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.mock.ts @@ -6,11 +6,12 @@ * Side Public License, v 1. */ -import { PublicMethodsOf } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; +import type { PublicMethodsOf } from '@kbn/utility-types'; +import type { CoreUsageData, CoreUsageDataStart } from '@kbn/core-usage-data-server'; +import type { InternalCoreUsageDataSetup } from '@kbn/core-usage-data-base-server-internal'; import { CoreUsageDataService } from './core_usage_data_service'; import { coreUsageStatsClientMock } from './core_usage_stats_client.mock'; -import { CoreUsageData, InternalCoreUsageDataSetup, CoreUsageDataStart } from './types'; const createSetupContractMock = (usageStatsClient = coreUsageStatsClientMock.create()) => { const setupContract: jest.Mocked = { diff --git a/src/core/server/core_usage_data/core_usage_data_service.test.ts b/src/core/server/core_usage_data/core_usage_data_service.test.ts index 5ac2863745ee..4d4f0507a1e5 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.test.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.test.ts @@ -21,12 +21,12 @@ import { config as RawHttpConfig } from '@kbn/core-http-server-internal'; import { savedObjectsConfig as RawSavedObjectsConfig } from '@kbn/core-saved-objects-base-server-internal'; import { httpServiceMock } from '@kbn/core-http-server-mocks'; import { metricsServiceMock } from '@kbn/core-metrics-server-mocks'; -import { savedObjectsServiceMock } from '../saved_objects/saved_objects_service.mock'; +import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; import { CoreUsageDataService } from './core_usage_data_service'; import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { CORE_USAGE_STATS_TYPE } from './constants'; +import { CORE_USAGE_STATS_TYPE } from '@kbn/core-usage-data-base-server-internal'; import { CoreUsageStatsClient } from './core_usage_stats_client'; describe('CoreUsageDataService', () => { diff --git a/src/core/server/core_usage_data/core_usage_data_service.ts b/src/core/server/core_usage_data/core_usage_data_service.ts index c5f2335e333e..da0393d93766 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.ts @@ -27,21 +27,24 @@ import { LEGACY_URL_ALIAS_TYPE, type SavedObjectsConfigType, } from '@kbn/core-saved-objects-base-server-internal'; - -import { SavedObjectsServiceStart, SavedObjectTypeRegistry } from '..'; import type { CoreServicesUsageData, CoreUsageData, CoreUsageDataStart, - InternalCoreUsageDataSetup, + CoreIncrementUsageCounter, ConfigUsageData, CoreConfigUsageData, -} from './types'; +} from '@kbn/core-usage-data-server'; +import { + CORE_USAGE_STATS_TYPE, + type InternalCoreUsageDataSetup, +} from '@kbn/core-usage-data-base-server-internal'; +import type { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; +import type { SavedObjectsServiceStart } from '@kbn/core-saved-objects-server'; + import { isConfigured } from './is_configured'; import { coreUsageStatsType } from './core_usage_stats'; -import { CORE_USAGE_STATS_TYPE } from './constants'; import { CoreUsageStatsClient } from './core_usage_stats_client'; -import { CoreIncrementUsageCounter } from './types'; export type ExposedConfigsToUsage = Map>; diff --git a/src/core/server/core_usage_data/core_usage_stats.ts b/src/core/server/core_usage_data/core_usage_stats.ts index 12d1b8c2e3af..8b4ac4ffc25d 100644 --- a/src/core/server/core_usage_data/core_usage_stats.ts +++ b/src/core/server/core_usage_data/core_usage_stats.ts @@ -7,7 +7,7 @@ */ import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; -import { CORE_USAGE_STATS_TYPE } from './constants'; +import { CORE_USAGE_STATS_TYPE } from '@kbn/core-usage-data-base-server-internal'; import { migrateTo7141 } from './migrations'; /** @internal */ diff --git a/src/core/server/core_usage_data/core_usage_stats_client.test.ts b/src/core/server/core_usage_data/core_usage_stats_client.test.ts index 9a6984f6b578..a06a23921760 100644 --- a/src/core/server/core_usage_data/core_usage_stats_client.test.ts +++ b/src/core/server/core_usage_data/core_usage_stats_client.test.ts @@ -7,12 +7,15 @@ */ import { httpServerMock, httpServiceMock, savedObjectsRepositoryMock } from '../mocks'; -import { CORE_USAGE_STATS_TYPE, CORE_USAGE_STATS_ID } from './constants'; import { + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, BaseIncrementOptions, IncrementSavedObjectsImportOptions, IncrementSavedObjectsResolveImportErrorsOptions, IncrementSavedObjectsExportOptions, +} from '@kbn/core-usage-data-base-server-internal'; +import { BULK_CREATE_STATS_PREFIX, BULK_GET_STATS_PREFIX, BULK_UPDATE_STATS_PREFIX, diff --git a/src/core/server/core_usage_data/core_usage_stats_client.ts b/src/core/server/core_usage_data/core_usage_stats_client.ts index c14776ff7ed8..f7c5709afa52 100644 --- a/src/core/server/core_usage_data/core_usage_stats_client.ts +++ b/src/core/server/core_usage_data/core_usage_stats_client.ts @@ -7,31 +7,18 @@ */ import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; -import { CORE_USAGE_STATS_TYPE, CORE_USAGE_STATS_ID } from './constants'; -import { CoreUsageStats } from './types'; +import type { CoreUsageStats } from '@kbn/core-usage-data-server'; import { - ISavedObjectsRepository, - SavedObjectsImportOptions, - SavedObjectsResolveImportErrorsOptions, - KibanaRequest, - IBasePath, -} from '..'; - -/** @internal */ -export interface BaseIncrementOptions { - request: KibanaRequest; -} -/** @internal */ -export type IncrementSavedObjectsImportOptions = BaseIncrementOptions & - Pick; -/** @internal */ -export type IncrementSavedObjectsResolveImportErrorsOptions = BaseIncrementOptions & - Pick; -/** @internal */ -export type IncrementSavedObjectsExportOptions = BaseIncrementOptions & { - types?: string[]; - supportedTypes: string[]; -}; + type ICoreUsageStatsClient, + type BaseIncrementOptions, + type IncrementSavedObjectsImportOptions, + type IncrementSavedObjectsResolveImportErrorsOptions, + type IncrementSavedObjectsExportOptions, + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + REPOSITORY_RESOLVE_OUTCOME_STATS, +} from '@kbn/core-usage-data-base-server-internal'; +import { ISavedObjectsRepository, KibanaRequest, IBasePath } from '..'; export const BULK_CREATE_STATS_PREFIX = 'apiCalls.savedObjectsBulkCreate'; export const BULK_GET_STATS_PREFIX = 'apiCalls.savedObjectsBulkGet'; @@ -49,13 +36,6 @@ export const EXPORT_STATS_PREFIX = 'apiCalls.savedObjectsExport'; export const LEGACY_DASHBOARDS_IMPORT_STATS_PREFIX = 'apiCalls.legacyDashboardImport'; export const LEGACY_DASHBOARDS_EXPORT_STATS_PREFIX = 'apiCalls.legacyDashboardExport'; -export const REPOSITORY_RESOLVE_OUTCOME_STATS = { - EXACT_MATCH: 'savedObjectsRepository.resolvedOutcome.exactMatch', - ALIAS_MATCH: 'savedObjectsRepository.resolvedOutcome.aliasMatch', - CONFLICT: 'savedObjectsRepository.resolvedOutcome.conflict', - NOT_FOUND: 'savedObjectsRepository.resolvedOutcome.notFound', - TOTAL: 'savedObjectsRepository.resolvedOutcome.total', -}; const ALL_COUNTER_FIELDS = [ // Saved Objects Client APIs ...getFieldsForCounter(BULK_CREATE_STATS_PREFIX), @@ -92,7 +72,7 @@ const ALL_COUNTER_FIELDS = [ const SPACE_CONTEXT_REGEX = /^\/s\/([a-z0-9_\-]+)/; /** @internal */ -export class CoreUsageStatsClient { +export class CoreUsageStatsClient implements ICoreUsageStatsClient { constructor( private readonly debugLogger: (message: string) => void, private readonly basePath: IBasePath, diff --git a/src/core/server/core_usage_data/index.ts b/src/core/server/core_usage_data/index.ts index 186ad95cbdca..227edb779e51 100644 --- a/src/core/server/core_usage_data/index.ts +++ b/src/core/server/core_usage_data/index.ts @@ -6,28 +6,30 @@ * Side Public License, v 1. */ -export { CORE_USAGE_STATS_TYPE, CORE_USAGE_STATS_ID } from './constants'; -export type { - InternalCoreUsageDataSetup, - ConfigUsageData, - CoreUsageDataStart, - CoreUsageDataSetup, - CoreUsageCounter, - CoreIncrementUsageCounter, - CoreIncrementCounterParams, -} from './types'; +export { + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + REPOSITORY_RESOLVE_OUTCOME_STATS, + type InternalCoreUsageDataSetup, +} from '@kbn/core-usage-data-base-server-internal'; export { CoreUsageDataService } from './core_usage_data_service'; -export { CoreUsageStatsClient, REPOSITORY_RESOLVE_OUTCOME_STATS } from './core_usage_stats_client'; +export { CoreUsageStatsClient } from './core_usage_stats_client'; // Because of #79265 we need to explicitly import, then export these types for // scripts/telemetry_check.js to work as expected -import { +import type { CoreUsageStats, CoreUsageData, CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData, -} from './types'; + ConfigUsageData, + CoreUsageDataStart, + CoreUsageDataSetup, + CoreUsageCounter, + CoreIncrementUsageCounter, + CoreIncrementCounterParams, +} from '@kbn/core-usage-data-server'; export type { CoreUsageStats, @@ -35,4 +37,10 @@ export type { CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData, + ConfigUsageData, + CoreUsageDataStart, + CoreUsageDataSetup, + CoreUsageCounter, + CoreIncrementUsageCounter, + CoreIncrementCounterParams, }; diff --git a/src/core/server/core_usage_data/migrations.test.ts b/src/core/server/core_usage_data/migrations.test.ts index 9139280a9eff..63d89c9aaef0 100644 --- a/src/core/server/core_usage_data/migrations.test.ts +++ b/src/core/server/core_usage_data/migrations.test.ts @@ -7,8 +7,8 @@ */ import type { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; +import type { CoreUsageStats } from '@kbn/core-usage-data-server'; import { migrateTo7141 } from './migrations'; -import type { CoreUsageStats } from './types'; const type = 'obj-type'; const id = 'obj-id'; diff --git a/src/core/server/core_usage_data/migrations.ts b/src/core/server/core_usage_data/migrations.ts index bb7ae49e0be4..35d9f5806cc8 100644 --- a/src/core/server/core_usage_data/migrations.ts +++ b/src/core/server/core_usage_data/migrations.ts @@ -8,7 +8,7 @@ import { cloneDeep } from 'lodash'; import type { SavedObjectUnsanitizedDoc } from '@kbn/core-saved-objects-server'; -import type { CoreUsageStats } from './types'; +import type { CoreUsageStats } from '@kbn/core-usage-data-server'; export const migrateTo7141 = (doc: SavedObjectUnsanitizedDoc) => { try { diff --git a/src/core/server/deprecations/deprecations_factory.test.ts b/src/core/server/deprecations/deprecations_factory.test.ts index 3ae83a1886e5..516af545916c 100644 --- a/src/core/server/deprecations/deprecations_factory.test.ts +++ b/src/core/server/deprecations/deprecations_factory.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { GetDeprecationsContext } from './types'; +import type { GetDeprecationsContext } from '@kbn/core-deprecations-server'; import { DeprecationsFactory, DeprecationsFactoryConfig } from './deprecations_factory'; import { loggerMock } from '@kbn/logging-mocks'; import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; diff --git a/src/core/server/deprecations/deprecations_factory.ts b/src/core/server/deprecations/deprecations_factory.ts index 514817ed1c12..4e02f318a4c8 100644 --- a/src/core/server/deprecations/deprecations_factory.ts +++ b/src/core/server/deprecations/deprecations_factory.ts @@ -9,8 +9,8 @@ import { i18n } from '@kbn/i18n'; import type { Logger } from '@kbn/logging'; import type { DomainDeprecationDetails, DeprecationsDetails } from '@kbn/core-deprecations-common'; +import type { GetDeprecationsContext } from '@kbn/core-deprecations-server'; import { DeprecationsRegistry } from './deprecations_registry'; -import type { GetDeprecationsContext } from './types'; export interface DeprecationsFactoryDeps { logger: Logger; diff --git a/src/core/server/deprecations/deprecations_registry.mock.ts b/src/core/server/deprecations/deprecations_registry.mock.ts index 65433f5eca5c..22ffff877ddc 100644 --- a/src/core/server/deprecations/deprecations_registry.mock.ts +++ b/src/core/server/deprecations/deprecations_registry.mock.ts @@ -8,9 +8,9 @@ import type { PublicMethodsOf } from '@kbn/utility-types'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; +import type { GetDeprecationsContext } from '@kbn/core-deprecations-server'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { DeprecationsRegistry } from './deprecations_registry'; -import type { GetDeprecationsContext } from './types'; -import { savedObjectsClientMock } from '../saved_objects/service/saved_objects_client.mock'; type DeprecationsRegistryContract = PublicMethodsOf; diff --git a/src/core/server/deprecations/deprecations_registry.test.ts b/src/core/server/deprecations/deprecations_registry.test.ts index 0f7e2704d934..435487bf4db6 100644 --- a/src/core/server/deprecations/deprecations_registry.test.ts +++ b/src/core/server/deprecations/deprecations_registry.test.ts @@ -7,7 +7,10 @@ */ /* eslint-disable dot-notation */ -import type { RegisterDeprecationsConfig, GetDeprecationsContext } from './types'; +import type { + RegisterDeprecationsConfig, + GetDeprecationsContext, +} from '@kbn/core-deprecations-server'; import { DeprecationsRegistry } from './deprecations_registry'; describe('DeprecationsRegistry', () => { diff --git a/src/core/server/deprecations/deprecations_registry.ts b/src/core/server/deprecations/deprecations_registry.ts index 6e59504d0d1d..4810d000b582 100644 --- a/src/core/server/deprecations/deprecations_registry.ts +++ b/src/core/server/deprecations/deprecations_registry.ts @@ -8,7 +8,11 @@ import { withTimeout, isPromise } from '@kbn/std'; import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; -import type { RegisterDeprecationsConfig, GetDeprecationsContext } from './types'; +import type { + RegisterDeprecationsConfig, + GetDeprecationsContext, +} from '@kbn/core-deprecations-server'; + const MsInSec = 1000; export class DeprecationsRegistry { diff --git a/src/core/server/deprecations/deprecations_route_handler_context.ts b/src/core/server/deprecations/deprecations_route_handler_context.ts index bd19023a1ec7..f3bb17dd720a 100644 --- a/src/core/server/deprecations/deprecations_route_handler_context.ts +++ b/src/core/server/deprecations/deprecations_route_handler_context.ts @@ -7,7 +7,7 @@ */ import type { CoreElasticsearchRouteHandlerContext } from '@kbn/core-elasticsearch-server-internal'; -import type { CoreSavedObjectsRouteHandlerContext } from '../saved_objects'; +import type { CoreSavedObjectsRouteHandlerContext } from '@kbn/core-saved-objects-server-internal'; import type { DeprecationsClient, InternalDeprecationsServiceStart } from './deprecations_service'; /** diff --git a/src/core/server/deprecations/deprecations_service.mock.ts b/src/core/server/deprecations/deprecations_service.mock.ts index c274c4409cce..a3be83dfc138 100644 --- a/src/core/server/deprecations/deprecations_service.mock.ts +++ b/src/core/server/deprecations/deprecations_service.mock.ts @@ -7,13 +7,14 @@ */ import type { PublicMethodsOf } from '@kbn/utility-types'; +import type { DeprecationsServiceSetup } from '@kbn/core-deprecations-server'; import { DeprecationsService, InternalDeprecationsServiceSetup, - DeprecationsServiceSetup, InternalDeprecationsServiceStart, DeprecationsClient, } from './deprecations_service'; + type DeprecationsServiceContract = PublicMethodsOf; const createSetupContractMock = () => { diff --git a/src/core/server/deprecations/deprecations_service.ts b/src/core/server/deprecations/deprecations_service.ts index 0fbc6a294013..5ed25bee4c3d 100644 --- a/src/core/server/deprecations/deprecations_service.ts +++ b/src/core/server/deprecations/deprecations_service.ts @@ -14,89 +14,14 @@ import type { DomainDeprecationDetails } from '@kbn/core-deprecations-common'; import type { InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import type { + DeprecationsServiceSetup, + DeprecationRegistryProvider, +} from '@kbn/core-deprecations-server'; import { DeprecationsFactory } from './deprecations_factory'; -import { RegisterDeprecationsConfig } from './types'; import { registerRoutes } from './routes'; import { config as deprecationConfig, DeprecationConfigType } from './deprecation_config'; -/** - * The deprecations service provides a way for the Kibana platform to communicate deprecated - * features and configs with its users. These deprecations are only communicated - * if the deployment is using these features. Allowing for a user tailored experience - * for upgrading the stack version. - * - * The Deprecation service is consumed by the upgrade assistant to assist with the upgrade - * experience. - * - * If a deprecated feature can be resolved without manual user intervention. - * Using correctiveActions.api allows the Upgrade Assistant to use this api to correct the - * deprecation upon a user trigger. - * - * @example - * ```ts - * import { DeprecationsDetails, GetDeprecationsContext, CoreSetup } from 'src/core/server'; - * import { i18n } from '@kbn/i18n'; - * - * async function getDeprecations({ esClient, savedObjectsClient }: GetDeprecationsContext): Promise { - * const deprecations: DeprecationsDetails[] = []; - * const count = await getFooCount(savedObjectsClient); - * if (count > 0) { - * deprecations.push({ - * title: i18n.translate('xpack.foo.deprecations.title', { - * defaultMessage: `Foo's are deprecated` - * }), - * message: i18n.translate('xpack.foo.deprecations.message', { - * defaultMessage: `You have {count} Foo's. Migrate your Foo's to a dashboard to continue using them.`, - * values: { count }, - * }), - * documentationUrl: - * 'https://www.elastic.co/guide/en/kibana/current/foo.html', - * level: 'warning', - * correctiveActions: { - * manualSteps: [ - * i18n.translate('xpack.foo.deprecations.manualStepOneMessage', { - * defaultMessage: 'Navigate to the Kibana Dashboard and click "Create dashboard".', - * }), - * i18n.translate('xpack.foo.deprecations.manualStepTwoMessage', { - * defaultMessage: 'Select Foo from the "New Visualization" window.', - * }), - * ], - * api: { - * path: '/internal/security/users/test_dashboard_user', - * method: 'POST', - * body: { - * username: 'test_dashboard_user', - * roles: [ - * "machine_learning_user", - * "enrich_user", - * "kibana_admin" - * ], - * full_name: "Alison Goryachev", - * email: "alisongoryachev@gmail.com", - * metadata: {}, - * enabled: true - * } - * }, - * }, - * }); - * } - * return deprecations; - * } - * - * - * export class Plugin() { - * setup: (core: CoreSetup) => { - * core.deprecations.registerDeprecations({ getDeprecations }); - * } - * } - * ``` - * - * @public - */ -export interface DeprecationsServiceSetup { - registerDeprecations: (deprecationContext: RegisterDeprecationsConfig) => void; -} - /** * Server-side client that provides access to fetch all Kibana deprecations * @@ -118,9 +43,7 @@ export interface InternalDeprecationsServiceStart { } /** @internal */ -export interface InternalDeprecationsServiceSetup { - getRegistry: (domainId: string) => DeprecationsServiceSetup; -} +export type InternalDeprecationsServiceSetup = DeprecationRegistryProvider; /** @internal */ export interface DeprecationsSetupDeps { diff --git a/src/core/server/deprecations/index.ts b/src/core/server/deprecations/index.ts index db6fe8193867..623a343a6aa8 100644 --- a/src/core/server/deprecations/index.ts +++ b/src/core/server/deprecations/index.ts @@ -6,10 +6,13 @@ * Side Public License, v 1. */ -export type { GetDeprecationsContext, RegisterDeprecationsConfig } from './types'; - export type { DeprecationsServiceSetup, + GetDeprecationsContext, + RegisterDeprecationsConfig, +} from '@kbn/core-deprecations-server'; + +export type { InternalDeprecationsServiceSetup, InternalDeprecationsServiceStart, DeprecationsClient, diff --git a/src/core/server/deprecations/types.ts b/src/core/server/deprecations/types.ts deleted file mode 100644 index d0cf2261728e..000000000000 --- a/src/core/server/deprecations/types.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import type { MaybePromise } from '@kbn/utility-types'; -import type { DeprecationsDetails } from '@kbn/core-deprecations-common'; -import type { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; -import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; - -/** - * @public - */ -export interface RegisterDeprecationsConfig { - getDeprecations: (context: GetDeprecationsContext) => MaybePromise; -} - -/** - * @public - */ -export interface GetDeprecationsContext { - esClient: IScopedClusterClient; - savedObjectsClient: SavedObjectsClientContract; -} diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 3327340c91a8..98fd84e6fc70 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -394,15 +394,12 @@ export { mergeSavedObjectMigrationMaps, } from '@kbn/core-saved-objects-utils-server'; export { SavedObjectTypeRegistry } from '@kbn/core-saved-objects-base-server-internal'; - +export type { SavedObjectsRepository } from '@kbn/core-saved-objects-api-server-internal'; +export { SavedObjectsClient } from '@kbn/core-saved-objects-api-server-internal'; export type { - SavedObjectsRepository, - SavedObjectsExporter, SavedObjectsExportError, - SavedObjectsImporter, SavedObjectsImportError, -} from './saved_objects'; -export { SavedObjectsClient } from './saved_objects'; +} from '@kbn/core-saved-objects-import-export-server-internal'; export type { IUiSettingsClient, diff --git a/src/core/server/integration_tests/saved_objects/migrations/actions/actions.test.ts b/src/core/server/integration_tests/saved_objects/migrations/actions/actions.test.ts index a656b0bdd10e..fc3185c71b8a 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/actions/actions.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/actions/actions.test.ts @@ -39,12 +39,10 @@ import { waitForIndexStatus, initAction, cloneIndex, -} from '../../../../saved_objects/migrations/actions'; -import type { - DocumentsTransformFailed, - DocumentsTransformSuccess, -} from '../../../../saved_objects/migrations/core'; -import { MIGRATION_CLIENT_OPTIONS } from '../../../../saved_objects/migrations/run_resilient_migrator'; + type DocumentsTransformFailed, + type DocumentsTransformSuccess, + MIGRATION_CLIENT_OPTIONS, +} from '@kbn/core-saved-objects-migration-server-internal'; const { startES } = kbnTestServer.createTestServers({ adjustTimeout: (t: number) => jest.setTimeout(t), diff --git a/src/core/server/integration_tests/saved_objects/migrations/actions/es_errors.test.ts b/src/core/server/integration_tests/saved_objects/migrations/actions/es_errors.test.ts index dab9067e93ef..749be45b35cb 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/actions/es_errors.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/actions/es_errors.test.ts @@ -13,9 +13,9 @@ import { Root } from '../../../../root'; import { isWriteBlockException, isClusterShardLimitExceeded, -} from '../../../../saved_objects/migrations/actions/es_errors'; -import { createIndex } from '../../../../saved_objects/migrations/actions/create_index'; -import { setWriteBlock } from '../../../../saved_objects/migrations/actions/set_write_block'; + createIndex, + setWriteBlock, +} from '@kbn/core-saved-objects-migration-server-internal'; const { startES } = kbnTestServer.createTestServers({ adjustTimeout: (t: number) => jest.setTimeout(t), diff --git a/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes.test.ts b/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes.test.ts index 1b903ea86489..41733b5419a4 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes.test.ts @@ -16,7 +16,7 @@ import { Env } from '@kbn/config'; import { REPO_ROOT } from '@kbn/utils'; import { getEnvOptions } from '@kbn/config-mocks'; import { LogRecord } from '@kbn/logging'; -import { retryAsync } from '../../../saved_objects/migrations/test_helpers/retry_async'; +import { retryAsync } from '@kbn/core-saved-objects-migration-server-mocks'; const kibanaVersion = Env.createDefault(REPO_ROOT, getEnvOptions()).packageInfo.version; const targetIndex = `.kibana_${kibanaVersion}_001`; diff --git a/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes_exceeds_es_content_length.test.ts b/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes_exceeds_es_content_length.test.ts index 670660509f7a..a81ca34b23fd 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes_exceeds_es_content_length.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/batch_size_bytes_exceeds_es_content_length.test.ts @@ -10,8 +10,8 @@ import Path from 'path'; import fs from 'fs/promises'; import JSON5 from 'json5'; import * as kbnTestServer from '../../../../test_helpers/kbn_server'; +import { retryAsync } from '@kbn/core-saved-objects-migration-server-mocks'; import { Root } from '../../../root'; -import { retryAsync } from '../../../saved_objects/migrations/test_helpers/retry_async'; const logFilePath = Path.join(__dirname, 'batch_size_bytes_exceeds_es_content_length.log'); diff --git a/src/core/server/integration_tests/saved_objects/migrations/collects_corrupt_docs.test.ts b/src/core/server/integration_tests/saved_objects/migrations/collects_corrupt_docs.test.ts index 09c0373d235e..30f9bd2e30b8 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/collects_corrupt_docs.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/collects_corrupt_docs.test.ts @@ -90,7 +90,7 @@ describe('migration v2 with corrupt saved object documents', () => { await root.start(); expect(true).toEqual(false); } catch (err) { - const errorMessage = err.message; + const errorMessage = err.message as string; const errorLines = errorMessage.split('\n'); const errorMessageWithoutStack = errorLines .filter((line: string) => !line.includes(' at ')) @@ -117,7 +117,7 @@ describe('migration v2 with corrupt saved object documents', () => { }, { mode: 'contain', - value: 'at transform', + value: 'at tryTransformDoc', }, { mode: 'equal', @@ -129,7 +129,7 @@ describe('migration v2 with corrupt saved object documents', () => { }, { mode: 'contain', - value: 'at migrationFn', + value: 'at 7.14.0', }, { mode: 'equal', @@ -137,7 +137,7 @@ describe('migration v2 with corrupt saved object documents', () => { }, { mode: 'contain', - value: 'at transform', + value: 'at tryTransformDoc', }, { mode: 'equal', @@ -149,7 +149,7 @@ describe('migration v2 with corrupt saved object documents', () => { }, { mode: 'contain', - value: 'at migrationFn', + value: 'at 7.14.0', }, ]); } diff --git a/src/core/server/integration_tests/saved_objects/migrations/incompatible_cluster_routing_allocation.test.ts b/src/core/server/integration_tests/saved_objects/migrations/incompatible_cluster_routing_allocation.test.ts index 95f6445812d8..c4dc0d5623b1 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/incompatible_cluster_routing_allocation.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/incompatible_cluster_routing_allocation.test.ts @@ -14,7 +14,7 @@ import { Root } from '../../../root'; import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; import { LogRecord } from '@kbn/logging'; import { getDocVersion } from './test_utils'; -import { retryAsync } from '../../../saved_objects/migrations/test_helpers/retry_async'; +import { retryAsync } from '@kbn/core-saved-objects-migration-server-mocks'; const logFilePath = Path.join(__dirname, 'incompatible_cluster_routing_allocation.log'); const docVersion = getDocVersion(); diff --git a/src/core/server/integration_tests/saved_objects/migrations/rewriting_id.test.ts b/src/core/server/integration_tests/saved_objects/migrations/rewriting_id.test.ts index 4cfbe4d9bd1d..0607787cacb1 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/rewriting_id.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/rewriting_id.test.ts @@ -13,7 +13,7 @@ import { kibanaPackageJson as pkg } from '@kbn/utils'; import * as kbnTestServer from '../../../../test_helpers/kbn_server'; import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; import { Root } from '../../../root'; -import { deterministicallyRegenerateObjectId } from '../../../saved_objects/migrations/core/document_migrator'; +import { deterministicallyRegenerateObjectId } from '@kbn/core-saved-objects-migration-server-internal'; const logFilePath = Path.join(__dirname, 'rewriting_id.log'); diff --git a/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts b/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts index b71529d2ff1a..93e3bd913ded 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { REMOVED_TYPES } from '../../../saved_objects/migrations/core'; +import { REMOVED_TYPES } from '@kbn/core-saved-objects-migration-server-internal'; import * as kbnTestServer from '../../../../test_helpers/kbn_server'; // Types should NEVER be removed from this array diff --git a/src/core/server/integration_tests/saved_objects/routes/bulk_create.test.ts b/src/core/server/integration_tests/saved_objects/routes/bulk_create.test.ts index 899cf114f686..03b4eca6e3a5 100644 --- a/src/core/server/integration_tests/saved_objects/routes/bulk_create.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/bulk_create.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerBulkCreateRoute } from '../../../saved_objects/routes/bulk_create'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerBulkCreateRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/bulk_get.test.ts b/src/core/server/integration_tests/saved_objects/routes/bulk_get.test.ts index 6c903ff672b3..aeaee514e21f 100644 --- a/src/core/server/integration_tests/saved_objects/routes/bulk_get.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/bulk_get.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerBulkGetRoute } from '../../../saved_objects/routes/bulk_get'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerBulkGetRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/bulk_resolve.test.ts b/src/core/server/integration_tests/saved_objects/routes/bulk_resolve.test.ts index 0c51e58f713b..07d053ec8f6e 100644 --- a/src/core/server/integration_tests/saved_objects/routes/bulk_resolve.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/bulk_resolve.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerBulkResolveRoute } from '../../../saved_objects/routes/bulk_resolve'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerBulkResolveRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/bulk_update.test.ts b/src/core/server/integration_tests/saved_objects/routes/bulk_update.test.ts index 45aedf8544df..cd6ae064ae9e 100644 --- a/src/core/server/integration_tests/saved_objects/routes/bulk_update.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/bulk_update.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerBulkUpdateRoute } from '../../../saved_objects/routes/bulk_update'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerBulkUpdateRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/create.test.ts b/src/core/server/integration_tests/saved_objects/routes/create.test.ts index bdaca61ee23e..9f002d904337 100644 --- a/src/core/server/integration_tests/saved_objects/routes/create.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/create.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerCreateRoute } from '../../../saved_objects/routes/create'; -import { savedObjectsClientMock } from '../../../saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerCreateRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/delete.test.ts b/src/core/server/integration_tests/saved_objects/routes/delete.test.ts index 41f7fd06556f..9d4b9ce5e27b 100644 --- a/src/core/server/integration_tests/saved_objects/routes/delete.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/delete.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerDeleteRoute } from '../../../saved_objects/routes/delete'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerDeleteRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/delete_unknown_types.test.ts b/src/core/server/integration_tests/saved_objects/routes/delete_unknown_types.test.ts index b4a215169a37..7ff8cfbcaf49 100644 --- a/src/core/server/integration_tests/saved_objects/routes/delete_unknown_types.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/delete_unknown_types.test.ts @@ -9,10 +9,12 @@ import supertest from 'supertest'; import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; -import { registerDeleteUnknownTypesRoute } from '../../../saved_objects/routes/deprecations'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; +import { setupServer } from './test_utils'; import { SavedObjectsType } from '../../..'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { + registerDeleteUnknownTypesRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/export.test.ts b/src/core/server/integration_tests/saved_objects/routes/export.test.ts index b107d1266fe3..45c1d42ba7cb 100644 --- a/src/core/server/integration_tests/saved_objects/routes/export.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/export.test.ts @@ -6,20 +6,18 @@ * Side Public License, v 1. */ -jest.mock('../../../saved_objects/export', () => ({ - exportSavedObjectsToStream: jest.fn(), -})); - import supertest from 'supertest'; import { createListStream } from '@kbn/utils'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { savedObjectsExporterMock } from '../../../saved_objects/export/saved_objects_exporter.mock'; +import { savedObjectsExporterMock } from '@kbn/core-saved-objects-import-export-server-mocks'; import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { registerExportRoute } from '../../../saved_objects/routes/export'; -import { setupServer, createExportableType } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer, createExportableType } from './test_utils'; +import { + registerExportRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; const allowedTypes = ['index-pattern', 'search']; diff --git a/src/core/server/integration_tests/saved_objects/routes/find.test.ts b/src/core/server/integration_tests/saved_objects/routes/find.test.ts index 41ec6c26041d..249222f6dc86 100644 --- a/src/core/server/integration_tests/saved_objects/routes/find.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/find.test.ts @@ -9,13 +9,15 @@ import supertest from 'supertest'; import querystring from 'querystring'; -import { registerFindRoute } from '../../../saved_objects/routes/find'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerFindRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/get.test.ts b/src/core/server/integration_tests/saved_objects/routes/get.test.ts index 264919a9d96b..d07749be57e9 100644 --- a/src/core/server/integration_tests/saved_objects/routes/get.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/get.test.ts @@ -7,17 +7,19 @@ */ import supertest from 'supertest'; -import { registerGetRoute } from '../../../saved_objects/routes/get'; import { ContextService } from '@kbn/core-http-context-server-internal'; import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import { createHttpServer, createCoreContext } from '@kbn/core-http-server-mocks'; -import { savedObjectsClientMock } from '../../../saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { CoreUsageStatsClient } from '../../../core_usage_data'; import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { contextServiceMock, coreMock } from '../../../mocks'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { + registerGetRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; const coreId = Symbol('core'); diff --git a/src/core/server/integration_tests/saved_objects/routes/import.test.ts b/src/core/server/integration_tests/saved_objects/routes/import.test.ts index ec6a483e8ae1..d6c9f9ab7edb 100644 --- a/src/core/server/integration_tests/saved_objects/routes/import.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/import.test.ts @@ -10,15 +10,17 @@ jest.mock('uuid'); import supertest from 'supertest'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; -import { registerImportRoute } from '../../../saved_objects/routes/import'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { setupServer, createExportableType } from '../../../saved_objects/routes/test_utils'; -import { SavedObjectsImporter } from '../../../saved_objects'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { SavedObjectsImporter } from '@kbn/core-saved-objects-import-export-server-internal'; +import { + registerImportRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; +import { setupServer, createExportableType } from './test_utils'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/export.test.ts b/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/export.test.ts index 22facc0f3235..f648238d21b7 100644 --- a/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/export.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/export.test.ts @@ -27,18 +27,17 @@ const exportObjects = [ }, ]; -jest.mock('../../../../saved_objects/routes/legacy_import_export/lib/export_dashboards', () => ({ - exportDashboards: jest.fn().mockResolvedValue({ version: 'mockversion', objects: exportObjects }), -})); - import supertest from 'supertest'; import { CoreUsageStatsClient } from '../../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../../core_usage_data/core_usage_data_service.mock'; -import { registerLegacyExportRoute } from '../../../../saved_objects/routes/legacy_import_export/export'; -import { setupServer } from '../../../../saved_objects/routes/test_utils'; +import { setupServer } from '../test_utils'; import { loggerMock } from '@kbn/logging-mocks'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../../saved_objects/internal_types'; +import { SavedObjectsBulkResponse } from '@kbn/core-saved-objects-api-server'; +import { + registerLegacyExportRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; let coreUsageStatsClient: jest.Mocked; @@ -46,9 +45,10 @@ let coreUsageStatsClient: jest.Mocked; describe('POST /api/dashboards/export', () => { let server: SetupServerReturn['server']; let httpSetup: SetupServerReturn['httpSetup']; + let handlerContext: SetupServerReturn['handlerContext']; beforeEach(async () => { - ({ server, httpSetup } = await setupServer()); + ({ server, httpSetup, handlerContext } = await setupServer()); const router = httpSetup.createRouter(''); @@ -56,11 +56,19 @@ describe('POST /api/dashboards/export', () => { coreUsageStatsClient.incrementLegacyDashboardsExport.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient); registerLegacyExportRoute(router, { - kibanaVersion: '7.14.0', + kibanaVersion: 'mockversion', coreUsageData, logger: loggerMock.create(), }); + handlerContext.savedObjects.client.bulkGet + .mockResolvedValueOnce({ + saved_objects: exportObjects, + } as SavedObjectsBulkResponse) + .mockResolvedValueOnce({ + saved_objects: [], + } as SavedObjectsBulkResponse); + await server.start(); }); diff --git a/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/import.test.ts b/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/import.test.ts index d508d4c048bf..82d26714c0f9 100644 --- a/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/import.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/legacy_import_export/import.test.ts @@ -27,18 +27,17 @@ const importObjects = [ }, ]; -jest.mock('../../../../saved_objects/routes/legacy_import_export/lib/import_dashboards', () => ({ - importDashboards: jest.fn().mockResolvedValue({ objects: importObjects }), -})); - import supertest from 'supertest'; import { CoreUsageStatsClient } from '../../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../../core_usage_data/core_usage_data_service.mock'; -import { registerLegacyImportRoute } from '../../../../saved_objects/routes/legacy_import_export/import'; -import { setupServer } from '../../../../saved_objects/routes/test_utils'; +import { setupServer } from '../test_utils'; import { loggerMock } from '@kbn/logging-mocks'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../../saved_objects/internal_types'; +import { SavedObjectsBulkResponse } from '@kbn/core-saved-objects-api-server'; +import { + registerLegacyImportRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; let coreUsageStatsClient: jest.Mocked; @@ -46,9 +45,10 @@ let coreUsageStatsClient: jest.Mocked; describe('POST /api/dashboards/import', () => { let server: SetupServerReturn['server']; let httpSetup: SetupServerReturn['httpSetup']; + let handlerContext: SetupServerReturn['handlerContext']; beforeEach(async () => { - ({ server, httpSetup } = await setupServer()); + ({ server, httpSetup, handlerContext } = await setupServer()); const router = httpSetup.createRouter(''); @@ -61,6 +61,10 @@ describe('POST /api/dashboards/import', () => { logger: loggerMock.create(), }); + handlerContext.savedObjects.client.bulkCreate.mockResolvedValueOnce({ + saved_objects: importObjects, + } as SavedObjectsBulkResponse); + await server.start(); }); diff --git a/src/core/server/integration_tests/saved_objects/routes/migrate.test.mocks.ts b/src/core/server/integration_tests/saved_objects/routes/migrate.test.mocks.ts index 7f5f03ecfbc0..7ab5130395b7 100644 --- a/src/core/server/integration_tests/saved_objects/routes/migrate.test.mocks.ts +++ b/src/core/server/integration_tests/saved_objects/routes/migrate.test.mocks.ts @@ -6,10 +6,14 @@ * Side Public License, v 1. */ -import { mockKibanaMigrator } from '../../../saved_objects/migrations/kibana_migrator.mock'; +import { mockKibanaMigrator } from '@kbn/core-saved-objects-migration-server-mocks'; export const migratorInstanceMock = mockKibanaMigrator.create(); export const KibanaMigratorMock = jest.fn().mockImplementation(() => migratorInstanceMock); -jest.doMock('../../../saved_objects/migrations/kibana_migrator', () => ({ - KibanaMigrator: KibanaMigratorMock, -})); +jest.doMock('@kbn/core-saved-objects-migration-server-internal', () => { + const actual = jest.requireActual('@kbn/core-saved-objects-migration-server-internal'); + return { + ...actual, + KibanaMigrator: KibanaMigratorMock, + }; +}); diff --git a/src/core/server/integration_tests/saved_objects/routes/resolve.test.ts b/src/core/server/integration_tests/saved_objects/routes/resolve.test.ts index 8ae3635a8b6e..dbcf1cbd7a6d 100644 --- a/src/core/server/integration_tests/saved_objects/routes/resolve.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/resolve.test.ts @@ -10,14 +10,16 @@ import supertest from 'supertest'; import { ContextService } from '@kbn/core-http-context-server-internal'; import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import { createHttpServer, createCoreContext } from '@kbn/core-http-server-mocks'; -import { registerResolveRoute } from '../../../saved_objects/routes/resolve'; -import { savedObjectsClientMock } from '../../../saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks'; import { contextServiceMock, coreMock } from '../../../mocks'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { + registerResolveRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; const coreId = Symbol('core'); diff --git a/src/core/server/integration_tests/saved_objects/routes/resolve_import_errors.test.ts b/src/core/server/integration_tests/saved_objects/routes/resolve_import_errors.test.ts index 5d26fde36fae..e263399c2d67 100644 --- a/src/core/server/integration_tests/saved_objects/routes/resolve_import_errors.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/resolve_import_errors.test.ts @@ -9,15 +9,17 @@ jest.mock('uuid'); import supertest from 'supertest'; -import { registerResolveImportErrorsRoute } from '../../../saved_objects/routes/resolve_import_errors'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer, createExportableType } from '../../../saved_objects/routes/test_utils'; +import { setupServer, createExportableType } from './test_utils'; import { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal'; -import { SavedObjectsImporter } from '../../../saved_objects/import'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { SavedObjectsImporter } from '@kbn/core-saved-objects-import-export-server-internal'; +import { + registerResolveImportErrorsRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/saved_objects/routes/test_utils.ts b/src/core/server/integration_tests/saved_objects/routes/test_utils.ts similarity index 83% rename from src/core/server/saved_objects/routes/test_utils.ts rename to src/core/server/integration_tests/saved_objects/routes/test_utils.ts index 8f94837b081a..89fb671aae37 100644 --- a/src/core/server/saved_objects/routes/test_utils.ts +++ b/src/core/server/integration_tests/saved_objects/routes/test_utils.ts @@ -10,8 +10,7 @@ import { executionContextServiceMock } from '@kbn/core-execution-context-server- import { ContextService } from '@kbn/core-http-context-server-internal'; import { createHttpServer, createCoreContext } from '@kbn/core-http-server-mocks'; import type { SavedObjectsType } from '@kbn/core-saved-objects-server'; -import { contextServiceMock, coreMock } from '../../mocks'; -import type { InternalSavedObjectsRequestHandlerContext } from '../internal_types'; +import { contextServiceMock, coreMock } from '../../../mocks'; const defaultCoreId = Symbol('core'); @@ -27,13 +26,9 @@ export const setupServer = async (coreId: symbol = defaultCoreId) => { }); const handlerContext = coreMock.createRequestHandlerContext(); - httpSetup.registerRouteHandlerContext( - coreId, - 'core', - (ctx, req, res) => { - return handlerContext; - } - ); + httpSetup.registerRouteHandlerContext(coreId, 'core', (ctx, req, res) => { + return handlerContext; + }); return { server, diff --git a/src/core/server/integration_tests/saved_objects/routes/update.test.ts b/src/core/server/integration_tests/saved_objects/routes/update.test.ts index d0b950093239..3caca07d7570 100644 --- a/src/core/server/integration_tests/saved_objects/routes/update.test.ts +++ b/src/core/server/integration_tests/saved_objects/routes/update.test.ts @@ -7,13 +7,15 @@ */ import supertest from 'supertest'; -import { registerUpdateRoute } from '../../../saved_objects/routes/update'; import { savedObjectsClientMock } from '../../../mocks'; import { CoreUsageStatsClient } from '../../../core_usage_data'; import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; -import { setupServer } from '../../../saved_objects/routes/test_utils'; -import type { InternalSavedObjectsRequestHandlerContext } from '../../../saved_objects/internal_types'; +import { setupServer } from './test_utils'; +import { + registerUpdateRoute, + type InternalSavedObjectsRequestHandlerContext, +} from '@kbn/core-saved-objects-server-internal'; type SetupServerReturn = Awaited>; diff --git a/src/core/server/internal_types.ts b/src/core/server/internal_types.ts index f37ad2e3a450..6df001934f09 100644 --- a/src/core/server/internal_types.ts +++ b/src/core/server/internal_types.ts @@ -44,7 +44,7 @@ import type { CapabilitiesSetup, CapabilitiesStart } from '@kbn/core-capabilitie import { InternalSavedObjectsServiceSetup, InternalSavedObjectsServiceStart, -} from './saved_objects'; +} from '@kbn/core-saved-objects-server-internal'; import { InternalUiSettingsServicePreboot, InternalUiSettingsServiceSetup, diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index e2ae9a96b716..ebc5d92be84b 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -24,6 +24,8 @@ import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { metricsServiceMock } from '@kbn/core-metrics-server-mocks'; import { capabilitiesServiceMock } from '@kbn/core-capabilities-server-mocks'; import { typeRegistryMock as savedObjectsTypeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; +import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import type { PluginInitializerContext, CoreSetup, @@ -33,8 +35,6 @@ import type { RequestHandlerContext, } from '.'; import { httpResourcesMock } from './http_resources/http_resources_service.mock'; -import { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; -import { savedObjectsClientMock } from './saved_objects/service/saved_objects_client.mock'; import { renderingMock } from './rendering/rendering_service.mock'; import { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; import { SharedGlobalConfig } from './plugins'; @@ -49,10 +49,12 @@ export { httpServerMock, sessionStorageMock, httpServiceMock } from '@kbn/core-h export { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; export { typeRegistryMock as savedObjectsTypeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks'; export { httpResourcesMock } from './http_resources/http_resources_service.mock'; -export { savedObjectsRepositoryMock } from './saved_objects/service/lib/repository.mock'; -export { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; -export { savedObjectsClientMock } from './saved_objects/service/saved_objects_client.mock'; -export { migrationMocks } from './saved_objects/migrations/mocks'; +export { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; +export { + savedObjectsClientMock, + savedObjectsRepositoryMock, +} from '@kbn/core-saved-objects-api-server-mocks'; +export { migrationMocks } from '@kbn/core-saved-objects-migration-server-mocks'; export { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; export { metricsServiceMock } from '@kbn/core-metrics-server-mocks'; export { renderingMock } from './rendering/rendering_service.mock'; diff --git a/src/core/server/saved_objects/migrations/core/types.ts b/src/core/server/saved_objects/migrations/core/types.ts deleted file mode 100644 index 61985d8f1099..000000000000 --- a/src/core/server/saved_objects/migrations/core/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export type MigrationStatus = - | 'waiting_to_start' - | 'waiting_for_other_nodes' - | 'running' - | 'completed'; - -export type MigrationResult = - | { status: 'skipped' } - | { status: 'patched' } - | { - status: 'migrated'; - destIndex: string; - sourceIndex: string; - elapsedMs: number; - }; diff --git a/src/core/server/server.test.mocks.ts b/src/core/server/server.test.mocks.ts index bd79d33d6d24..35512c091862 100644 --- a/src/core/server/server.test.mocks.ts +++ b/src/core/server/server.test.mocks.ts @@ -37,10 +37,10 @@ jest.doMock('@kbn/config', () => ({ ConfigService: jest.fn(() => mockConfigService), })); -import { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; +import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; export const mockSavedObjectsService = savedObjectsServiceMock.create(); -jest.doMock('./saved_objects/saved_objects_service', () => ({ +jest.doMock('@kbn/core-saved-objects-server-internal', () => ({ SavedObjectsService: jest.fn(() => mockSavedObjectsService), })); diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 82705f2428e5..b73cd8fc9975 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -49,15 +49,15 @@ import { savedObjectsConfig, savedObjectsMigrationConfig, } from '@kbn/core-saved-objects-base-server-internal'; +import { SavedObjectsService } from '@kbn/core-saved-objects-server-internal'; import { CoreApp } from './core_app'; import { I18nService } from './i18n'; import { HttpResourcesService } from './http_resources'; import { RenderingService } from './rendering'; import { UiSettingsService } from './ui_settings'; import { PluginsService, config as pluginsConfig } from './plugins'; -import { SavedObjectsService } from './saved_objects'; -// do not try to shorten the import to `./status`, it will break server test mocking +// do not try to shorten the import to `./status`, it will break server test mocking import { StatusService } from './status/status_service'; import { config as uiSettingsConfig } from './ui_settings'; import { config as statusConfig } from './status'; diff --git a/src/core/server/status/routes/status.ts b/src/core/server/status/routes/status.ts index 1528a8ef8fda..5033f2e9beac 100644 --- a/src/core/server/status/routes/status.ts +++ b/src/core/server/status/routes/status.ts @@ -13,7 +13,7 @@ import { PackageInfo } from '@kbn/config'; import type { PluginName } from '@kbn/core-base-common'; import type { IRouter } from '@kbn/core-http-server'; import type { MetricsServiceSetup } from '@kbn/core-metrics-server'; -import type { CoreIncrementUsageCounter } from '../../core_usage_data/types'; +import type { CoreIncrementUsageCounter } from '@kbn/core-usage-data-server'; import { ServiceStatus, CoreStatus, ServiceStatusLevels } from '../types'; import { calculateLegacyStatus, LegacyStatusInfo } from '../legacy_status'; import { StatusResponse } from '../../../types/status'; diff --git a/src/core/server/status/status_service.ts b/src/core/server/status/status_service.ts index 864348ec78aa..02f66740eb78 100644 --- a/src/core/server/status/status_service.ts +++ b/src/core/server/status/status_service.ts @@ -27,7 +27,7 @@ import type { InternalEnvironmentServiceSetup } from '@kbn/core-environment-serv import type { InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import type { InternalElasticsearchServiceSetup } from '@kbn/core-elasticsearch-server-internal'; import type { InternalMetricsServiceSetup } from '@kbn/core-metrics-server-internal'; -import { InternalSavedObjectsServiceSetup } from '../saved_objects'; +import type { InternalSavedObjectsServiceSetup } from '@kbn/core-saved-objects-server-internal'; import { registerStatusRoute } from './routes'; import type { InternalCoreUsageDataSetup } from '../core_usage_data'; diff --git a/src/core/server/test_utils.ts b/src/core/server/test_utils.ts index 219ed320e401..c96e168e1629 100644 --- a/src/core/server/test_utils.ts +++ b/src/core/server/test_utils.ts @@ -8,7 +8,7 @@ export { createHttpServer } from '@kbn/core-http-server-mocks'; export { ServiceStatusLevelSnapshotSerializer } from './status/test_utils'; -export { setupServer } from './saved_objects/routes/test_utils'; +export { setupServer } from './integration_tests/saved_objects/routes/test_utils'; export { getDeprecationsFor, getDeprecationsForGlobalSettings, diff --git a/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts b/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts index 6102ff6f7b1b..eb4772907050 100644 --- a/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts +++ b/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts @@ -11,7 +11,7 @@ import { mockGetUpgradeableConfig, } from './create_or_upgrade_saved_config.test.mock'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server'; -import { savedObjectsClientMock } from '../../saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { createOrUpgradeSavedConfig } from './create_or_upgrade_saved_config'; diff --git a/src/core/server/ui_settings/create_or_upgrade_saved_config/get_upgradeable_config.test.ts b/src/core/server/ui_settings/create_or_upgrade_saved_config/get_upgradeable_config.test.ts index b3f7b9f2fd55..26992ad33df4 100644 --- a/src/core/server/ui_settings/create_or_upgrade_saved_config/get_upgradeable_config.test.ts +++ b/src/core/server/ui_settings/create_or_upgrade_saved_config/get_upgradeable_config.test.ts @@ -7,8 +7,8 @@ */ import type { SavedObjectsFindResponse } from '@kbn/core-saved-objects-api-server'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { getUpgradeableConfig } from './get_upgradeable_config'; -import { savedObjectsClientMock } from '../../saved_objects/service/saved_objects_client.mock'; describe('getUpgradeableConfig', () => { it('finds saved objects with type "config"', async () => { diff --git a/src/core/server/ui_settings/ui_settings_client.test.ts b/src/core/server/ui_settings/ui_settings_client.test.ts index 1f2cab3f44c0..0467897d2fde 100644 --- a/src/core/server/ui_settings/ui_settings_client.test.ts +++ b/src/core/server/ui_settings/ui_settings_client.test.ts @@ -12,8 +12,8 @@ import { schema } from '@kbn/config-schema'; import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { mockCreateOrUpgradeSavedConfig } from './ui_settings_client.test.mock'; -import { SavedObjectsClient } from '../saved_objects'; -import { savedObjectsClientMock } from '../saved_objects/service/saved_objects_client.mock'; +import { SavedObjectsClient } from '@kbn/core-saved-objects-api-server-internal'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { UiSettingsClient } from './ui_settings_client'; import { CannotOverrideError } from './ui_settings_errors'; diff --git a/src/core/server/ui_settings/ui_settings_route_handler_context.ts b/src/core/server/ui_settings/ui_settings_route_handler_context.ts index a975f0faad6e..09a6aa4c43d6 100644 --- a/src/core/server/ui_settings/ui_settings_route_handler_context.ts +++ b/src/core/server/ui_settings/ui_settings_route_handler_context.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { CoreSavedObjectsRouteHandlerContext } from '../saved_objects'; +import type { CoreSavedObjectsRouteHandlerContext } from '@kbn/core-saved-objects-server-internal'; import type { IUiSettingsClient, InternalUiSettingsServiceStart } from './types'; /** diff --git a/src/core/server/ui_settings/ui_settings_service.test.ts b/src/core/server/ui_settings/ui_settings_service.test.ts index 64ba0880816e..2cfee201609d 100644 --- a/src/core/server/ui_settings/ui_settings_service.test.ts +++ b/src/core/server/ui_settings/ui_settings_service.test.ts @@ -17,8 +17,8 @@ import { getCoreSettingsMock, } from './ui_settings_service.test.mock'; import { UiSettingsService, SetupDeps } from './ui_settings_service'; -import { savedObjectsClientMock } from '../mocks'; -import { savedObjectsServiceMock } from '../saved_objects/saved_objects_service.mock'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; +import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; import { uiSettingsType } from './saved_objects'; import { UiSettingsDefaultsClient } from './ui_settings_defaults_client'; diff --git a/src/core/server/ui_settings/ui_settings_service.ts b/src/core/server/ui_settings/ui_settings_service.ts index 3b7bc2b27a3e..04f22e51828c 100644 --- a/src/core/server/ui_settings/ui_settings_service.ts +++ b/src/core/server/ui_settings/ui_settings_service.ts @@ -13,7 +13,7 @@ import type { Logger } from '@kbn/logging'; import type { CoreContext, CoreService } from '@kbn/core-base-server-internal'; import type { InternalHttpServiceSetup } from '@kbn/core-http-server-internal'; import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { InternalSavedObjectsServiceSetup } from '../saved_objects'; +import { InternalSavedObjectsServiceSetup } from '@kbn/core-saved-objects-server-internal'; import { UiSettingsConfigType, config as uiConfigDefinition } from './ui_settings_config'; import { UiSettingsClient } from './ui_settings_client'; import { diff --git a/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_collector.ts b/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_collector.ts index 9e0d7cfc8e8b..ce8e27f318cf 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_collector.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_collector.ts @@ -7,7 +7,8 @@ */ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; -import { CoreUsageData, CoreUsageDataStart } from '@kbn/core/server'; +import { CoreUsageDataStart } from '@kbn/core/server'; +import { CoreUsageData } from './core_usage_data'; export function getCoreUsageCollector( usageCollection: UsageCollectionSetup, diff --git a/src/core/server/core_usage_data/types.ts b/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_data.ts similarity index 81% rename from src/core/server/core_usage_data/types.ts rename to src/plugins/kibana_usage_collection/server/collectors/core/core_usage_data.ts index 0b09444da493..36aac8ec0511 100644 --- a/src/core/server/core_usage_data/types.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/core/core_usage_data.ts @@ -6,15 +6,15 @@ * Side Public License, v 1. */ -import { CoreUsageStatsClient } from './core_usage_stats_client'; -import { ISavedObjectTypeRegistry, SavedObjectTypeRegistry } from '..'; +// duplicate of the types from @kbn/core-usage-data-server +// required until https://github.com/elastic/kibana/issues/139389 is addressed + +export interface CoreUsageData extends CoreUsageStats { + config: CoreConfigUsageData; + services: CoreServicesUsageData; + environment: CoreEnvironmentUsageData; +} -/** - * @internal - * - * CoreUsageStats are collected over time while Kibana is running. This is related to CoreUsageData, which is a superset of this that also - * includes point-in-time configuration information. - * */ export interface CoreUsageStats { // Saved Objects Client APIs 'apiCalls.savedObjectsBulkCreate.total'?: number; @@ -140,32 +140,6 @@ export interface CoreUsageStats { 'savedObjectsRepository.resolvedOutcome.total'?: number; } -/** - * Type describing Core's usage data payload - * @internal - */ -export interface CoreUsageData extends CoreUsageStats { - config: CoreConfigUsageData; - services: CoreServicesUsageData; - environment: CoreEnvironmentUsageData; -} - -/** - * Type describing Core's usage data payload - * @internal - */ -export type ConfigUsageData = Record; - -/** - * Type describing Core's usage data payload - * @internal - */ -export type ExposedConfigsToUsage = Map>; - -/** - * Usage data from Core services - * @internal - */ export interface CoreServicesUsageData { savedObjects: { // scripts/telemetry_check.js does not support parsing Array<{...}> types @@ -190,7 +164,7 @@ export interface CoreServicesUsageData { /** * Usage data on this Kibana node's runtime environment. - * @internal + * @public */ export interface CoreEnvironmentUsageData { memory: { @@ -203,7 +177,7 @@ export interface CoreEnvironmentUsageData { /** * Usage data on this cluster's configuration of Core features - * @internal + * @public */ export interface CoreConfigUsageData { elasticsearch: { @@ -302,79 +276,3 @@ export interface CoreConfigUsageData { unset: string[]; }; } - -/** - * @internal Details about the counter to be incremented - */ -export interface CoreIncrementCounterParams { - /** The name of the counter **/ - counterName: string; - /** The counter type ("count" by default) **/ - counterType?: string; - /** Increment the counter by this number (1 if not specified) **/ - incrementBy?: number; -} - -/** - * @internal - * Method to call whenever an event occurs, so the counter can be increased. - */ -export type CoreIncrementUsageCounter = (params: CoreIncrementCounterParams) => void; - -/** - * @internal - * API to track whenever an event occurs, so the core can report them. - */ -export interface CoreUsageCounter { - /** @internal {@link CoreIncrementUsageCounter} **/ - incrementCounter: CoreIncrementUsageCounter; -} - -/** @internal */ -export interface InternalCoreUsageDataSetup extends CoreUsageDataSetup { - registerType( - typeRegistry: ISavedObjectTypeRegistry & Pick - ): void; - getClient(): CoreUsageStatsClient; - - /** @internal {@link CoreIncrementUsageCounter} **/ - incrementUsageCounter: CoreIncrementUsageCounter; -} - -/** - * Internal API for registering the Usage Tracker used for Core's usage data payload. - * - * @note This API should never be used to drive application logic and is only - * intended for telemetry purposes. - * - * @internal - */ -export interface CoreUsageDataSetup { - /** - * @internal - * API for a usage tracker plugin to inject the {@link CoreUsageCounter} to use - * when tracking events. - */ - registerUsageCounter: (usageCounter: CoreUsageCounter) => void; -} - -/** - * Internal API for getting Core's usage data payload. - * - * @note This API should never be used to drive application logic and is only - * intended for telemetry purposes. - * - * @internal - */ -export interface CoreUsageDataStart { - /** - * Internal API for getting Core's usage data payload. - * - * @note This API should never be used to drive application logic and is only - * intended for telemetry purposes. - * - * @internal - * */ - getCoreUsageData(): Promise; - getConfigsUsageData(): Promise; -} diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/remove.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/remove.test.ts index 41c25c6d4fd6..c7effcc47f99 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/remove.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/remove.test.ts @@ -7,7 +7,7 @@ import type { SavedObjectsClientContract } from '@kbn/core/server'; -import { savedObjectsClientMock } from '@kbn/core/server/saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core/server/mocks'; import type { EsAssetReference } from '../../../../../common/types/models'; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts index 574d7f2627b4..1b8c347ad07d 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transform.test.ts @@ -22,7 +22,7 @@ import { errors } from '@elastic/elasticsearch'; import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server'; import { loggerMock } from '@kbn/logging-mocks'; -import { savedObjectsClientMock } from '@kbn/core/server/saved_objects/service/saved_objects_client.mock'; +import { savedObjectsClientMock } from '@kbn/core/server/mocks'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { getInstallation, getInstallationObject } from '../../packages'; diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts index b4a9564e1199..62b608376986 100644 --- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts @@ -11,7 +11,7 @@ import type { SavedObject, SavedObjectsBulkCreateObject, SavedObjectsClientContract, - SavedObjectsImporter, + ISavedObjectsImporter, Logger, } from '@kbn/core/server'; import type { SavedObjectsImportSuccess, SavedObjectsImportFailure } from '@kbn/core/server/types'; @@ -33,7 +33,7 @@ import { withPackageSpan } from '../../packages/utils'; import { tagKibanaAssets } from './tag_assets'; -type SavedObjectsImporterContract = Pick; +type SavedObjectsImporterContract = Pick; const formatImportErrorsForLog = (errors: SavedObjectsImportFailure[]) => JSON.stringify( errors.map(({ type, id, error }) => ({ type, id, error })) // discard other fields @@ -143,7 +143,7 @@ export async function installKibanaAssetsAndReferences({ installedPkg, }: { savedObjectsClient: SavedObjectsClientContract; - savedObjectsImporter: Pick; + savedObjectsImporter: Pick; savedObjectTagAssignmentService: IAssignmentService; savedObjectTagClient: ITagsClient; logger: Logger; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index 00eb71e918bd..8168bb05e53a 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -10,7 +10,7 @@ import type { Logger, SavedObject, SavedObjectsClientContract, - SavedObjectsImporter, + ISavedObjectsImporter, } from '@kbn/core/server'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; @@ -71,7 +71,7 @@ export async function _installPackage({ verificationResult, }: { savedObjectsClient: SavedObjectsClientContract; - savedObjectsImporter: Pick; + savedObjectsImporter: Pick; savedObjectTagAssignmentService: IAssignmentService; savedObjectTagClient: ITagsClient; esClient: ElasticsearchClient; diff --git a/x-pack/plugins/monitoring/server/alerts/license_expiration_rule.test.ts b/x-pack/plugins/monitoring/server/alerts/license_expiration_rule.test.ts index c7bc493cab80..c60ebf0de296 100644 --- a/x-pack/plugins/monitoring/server/alerts/license_expiration_rule.test.ts +++ b/x-pack/plugins/monitoring/server/alerts/license_expiration_rule.test.ts @@ -21,9 +21,11 @@ jest.mock('../lib/alerts/fetch_clusters', () => ({ fetchClusters: jest.fn(), })); jest.mock('moment', () => { - const moment = function () {}; - moment.duration = () => ({ humanize: () => 'HUMANIZED_DURATION' }); - return moment; + const actual = jest.requireActual('moment'); + return { + ...actual, + duration: () => ({ humanize: () => 'HUMANIZED_DURATION' }), + }; }); jest.mock('../static_globals', () => ({ @@ -69,6 +71,7 @@ describe('LicenseExpirationRule', () => { describe('execute', () => { function FakeDate() {} + FakeDate.prototype.valueOf = () => 1; const clusterUuid = 'abc123'; diff --git a/yarn.lock b/yarn.lock index a65095864346..9a45cbf559f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2815,6 +2815,10 @@ version "0.0.0" uid "" +"@kbn/core-deprecations-server@link:bazel-bin/packages/core/deprecations/core-deprecations-server": + version "0.0.0" + uid "" + "@kbn/core-doc-links-browser-internal@link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal": version "0.0.0" uid "" @@ -3083,6 +3087,14 @@ version "0.0.0" uid "" +"@kbn/core-saved-objects-api-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-api-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-mocks": + version "0.0.0" + uid "" + "@kbn/core-saved-objects-api-server@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server": version "0.0.0" uid "" @@ -3111,6 +3123,30 @@ version "0.0.0" uid "" +"@kbn/core-saved-objects-import-export-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-import-export-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-mocks": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-migration-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-migration-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-mocks": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-saved-objects-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-mocks": + version "0.0.0" + uid "" + "@kbn/core-saved-objects-server@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server": version "0.0.0" uid "" @@ -3155,6 +3191,14 @@ version "0.0.0" uid "" +"@kbn/core-usage-data-base-server-internal@link:bazel-bin/packages/core/usage-data/core-usage-data-base-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-usage-data-server@link:bazel-bin/packages/core/usage-data/core-usage-data-server": + version "0.0.0" + uid "" + "@kbn/crypto-browser@link:bazel-bin/packages/kbn-crypto-browser": version "0.0.0" uid "" @@ -6793,6 +6837,10 @@ version "0.0.0" uid "" +"@types/kbn__core-deprecations-server@link:bazel-bin/packages/core/deprecations/core-deprecations-server/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-doc-links-browser-internal@link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal/npm_module_types": version "0.0.0" uid "" @@ -7065,6 +7113,14 @@ version "0.0.0" uid "" +"@types/kbn__core-saved-objects-api-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-api-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server-mocks/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-saved-objects-api-server@link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server/npm_module_types": version "0.0.0" uid "" @@ -7093,6 +7149,30 @@ version "0.0.0" uid "" +"@types/kbn__core-saved-objects-import-export-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-import-export-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-import-export-server-mocks/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-migration-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-migration-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-migration-server-mocks/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-server-internal@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-saved-objects-server-mocks@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server-mocks/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-saved-objects-server@link:bazel-bin/packages/core/saved-objects/core-saved-objects-server/npm_module_types": version "0.0.0" uid "" @@ -7141,6 +7221,14 @@ version "0.0.0" uid "" +"@types/kbn__core-usage-data-base-server-internal@link:bazel-bin/packages/core/usage-data/core-usage-data-base-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-usage-data-server@link:bazel-bin/packages/core/usage-data/core-usage-data-server/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__crypto-browser@link:bazel-bin/packages/kbn-crypto-browser/npm_module_types": version "0.0.0" uid "" From 1a82f0d8755ffd1e651397839af4c6f0d910aa51 Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Fri, 26 Aug 2022 13:02:53 +0200 Subject: [PATCH 26/50] [Stack Monitoring] Add log-* index pattern support on SM UI (#139121) * Add log-* index pattern support on SM UI * logs query fix * remove datastream dedicated filter * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * remove comment * renaming filebeat leftovers to logs * extract elasticsearch logs filter * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * update filter * typo Co-authored-by: klacabane Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/types/{filebeat.ts => logs.ts} | 6 +- .../lib/cluster/get_clusters_from_request.ts | 12 +- .../lib/cluster/get_index_patterns.test.ts | 228 +++++++++++++----- .../server/lib/cluster/get_index_patterns.ts | 92 ++++--- .../server/lib/logs/detect_reason.ts | 44 ++-- .../server/lib/logs/get_log_types.ts | 22 +- .../monitoring/server/lib/logs/get_logs.ts | 34 +-- .../server/lib/logs/init_infra_source.ts | 13 +- .../monitoring/server/lib/logs/logs_filter.ts | 12 + .../server/routes/api/v1/cluster/cluster.ts | 8 +- .../server/routes/api/v1/cluster/clusters.ts | 9 +- .../api/v1/elasticsearch/index_detail.ts | 15 +- .../api/v1/elasticsearch/node_detail.ts | 16 +- .../routes/api/v1/elasticsearch/overview.ts | 15 +- 14 files changed, 330 insertions(+), 196 deletions(-) rename x-pack/plugins/monitoring/common/types/{filebeat.ts => logs.ts} (85%) create mode 100644 x-pack/plugins/monitoring/server/lib/logs/logs_filter.ts diff --git a/x-pack/plugins/monitoring/common/types/filebeat.ts b/x-pack/plugins/monitoring/common/types/logs.ts similarity index 85% rename from x-pack/plugins/monitoring/common/types/filebeat.ts rename to x-pack/plugins/monitoring/common/types/logs.ts index 29c1af8a3a70..e3afa67cba3f 100644 --- a/x-pack/plugins/monitoring/common/types/filebeat.ts +++ b/x-pack/plugins/monitoring/common/types/logs.ts @@ -5,9 +5,9 @@ * 2.0. */ -export interface FilebeatResponse { +export interface LogsResponse { hits?: { - hits: FilebeatResponseHit[]; + hits: LogsResponseHit[]; total: { value: number; }; @@ -15,7 +15,7 @@ export interface FilebeatResponse { aggregations?: any; } -export interface FilebeatResponseHit { +export interface LogsResponseHit { _source: { message?: string; log?: { diff --git a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.ts b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.ts index dd6966940509..f47cee9175e2 100644 --- a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.ts +++ b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.ts @@ -40,13 +40,14 @@ import { isInCodePath } from './is_in_code_path'; import { LegacyRequest, Cluster } from '../../types'; import { RulesByType } from '../../../common/types/alerts'; import { getClusterRuleDataForClusters, getInstanceRuleDataForClusters } from '../kibana/rules'; +import { Globals } from '../../static_globals'; +import { getNewIndexPatterns } from './get_index_patterns'; /** * Get all clusters or the cluster associated with {@code clusterUuid} when it is defined. */ export async function getClustersFromRequest( req: LegacyRequest, - indexPatterns: { [x: string]: string }, { clusterUuid, start, @@ -54,7 +55,12 @@ export async function getClustersFromRequest( codePaths, }: { clusterUuid?: string; start?: number; end?: number; codePaths: string[] } ) { - const { filebeatIndexPattern } = indexPatterns; + const logsIndexPattern = getNewIndexPatterns({ + config: Globals.app.config, + type: 'logs', + moduleType: 'elasticsearch', + ccs: CCS_REMOTE_PATTERN, + }); const isStandaloneCluster = clusterUuid === STANDALONE_CLUSTER_CLUSTER_UUID; @@ -100,7 +106,7 @@ export async function getClustersFromRequest( cluster.logs = start && end && isInCodePath(codePaths, [CODE_PATH_LOGS]) - ? await getLogTypes(req, filebeatIndexPattern, { + ? await getLogTypes(req, logsIndexPattern, { clusterUuid: get(cluster, 'elasticsearch.cluster.id', cluster.cluster_uuid), start, end, diff --git a/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.test.ts b/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.test.ts index 015bdd4c65cc..60a03b3f3bcb 100644 --- a/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.test.ts +++ b/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { DS_INDEX_PATTERN_TYPES } from '../../../common/constants'; import { MonitoringConfig } from '../..'; import { getNewIndexPatterns } from './get_index_patterns'; @@ -14,89 +15,182 @@ const getConfigWithCcs = (ccsEnabled: boolean) => { ccs: { enabled: ccsEnabled, }, + logs: { + index: 'filebeat-*', + }, }, } as MonitoringConfig; }; +type TestTuple = [DS_INDEX_PATTERN_TYPES | undefined, string]; describe('getNewIndexPatterns', () => { beforeEach(() => { jest.resetModules(); }); - it('returns local elasticsearch index patterns when ccs is enabled (default true) and no ccs payload', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - moduleType: 'elasticsearch', - }); - expect(indexPatterns).toBe('.monitoring-es-*,metrics-elasticsearch.*-*'); - }); - it('returns ecs only elasticsearch index patterns when specifying ecsLegacyOnly: true', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - moduleType: 'elasticsearch', - ecsLegacyOnly: true, - }); - expect(indexPatterns).toBe('.monitoring-es-8-*,metrics-elasticsearch.*-*'); - }); - it('returns local kibana index patterns when ccs is enabled with no ccs payload', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - moduleType: 'kibana', - }); - expect(indexPatterns).toBe('.monitoring-kibana-*,metrics-kibana.*-*'); - }); - it('returns logstash index patterns when ccs is enabled and no ccs payload', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - moduleType: 'logstash', - }); - expect(indexPatterns).toBe('.monitoring-logstash-*,metrics-logstash.*-*'); - }); - it('returns beats index patterns when ccs is enabled and no ccs payload', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - moduleType: 'beats', - }); - expect(indexPatterns).toBe('.monitoring-beats-*,metrics-beats.*-*'); - }); - it('returns elasticsearch index patterns with dataset', () => { + it.each([ + [undefined, '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['metrics', '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['logs', 'filebeat-*,logs-elasticsearch.*-*'], + ])( + 'returns local elasticsearch index patterns when ccs is enabled (default true) and no ccs payload and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + moduleType: 'elasticsearch', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-es-8-*,metrics-elasticsearch.*-*'], + ['metrics', '.monitoring-es-8-*,metrics-elasticsearch.*-*'], + ['logs', 'filebeat-*,logs-elasticsearch.*-*'], + ])( + 'returns ecs only elasticsearch index patterns when specifying ecsLegacyOnly: true and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + moduleType: 'elasticsearch', + ecsLegacyOnly: true, + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-kibana-*,metrics-kibana.*-*'], + ['metrics', '.monitoring-kibana-*,metrics-kibana.*-*'], + ['logs', 'filebeat-*,logs-kibana.*-*'], + ])( + 'returns local kibana index patterns when ccs is enabled with no ccs payload and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + moduleType: 'kibana', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-logstash-*,metrics-logstash.*-*'], + ['metrics', '.monitoring-logstash-*,metrics-logstash.*-*'], + ['logs', 'filebeat-*,logs-logstash.*-*'], + ])( + 'returns logstash index patterns when ccs is enabled and no ccs payload and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + moduleType: 'logstash', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-beats-*,metrics-beats.*-*'], + ['metrics', '.monitoring-beats-*,metrics-beats.*-*'], + ['logs', 'filebeat-*,logs-beats.*-*'], + ])( + 'returns beats index patterns when ccs is enabled and no ccs payload and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + moduleType: 'beats', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-es-*,metrics-elasticsearch.cluster_stats-*'], + ['metrics', '.monitoring-es-*,metrics-elasticsearch.cluster_stats-*'], + ['logs', 'filebeat-*,logs-elasticsearch.cluster_stats-*'], + ])('returns elasticsearch index patterns with dataset and type %s', (type, expected) => { const indexPatterns = getNewIndexPatterns({ + type, config: getConfigWithCcs(true), moduleType: 'elasticsearch', dataset: 'cluster_stats', }); - expect(indexPatterns).toBe('.monitoring-es-*,metrics-elasticsearch.cluster_stats-*'); - }); - it('returns elasticsearch index patterns without ccs prefixes when ccs is disabled', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(false), - moduleType: 'elasticsearch', - }); - expect(indexPatterns).toBe('.monitoring-es-*,metrics-elasticsearch.*-*'); + expect(indexPatterns).toBe(expected); }); - it('returns elasticsearch index patterns without ccs prefixes when ccs is disabled but ccs request payload has a value', () => { + it.each([ + [undefined, '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['metrics', '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['logs', 'filebeat-*,logs-elasticsearch.*-*'], + ])( + 'returns elasticsearch index patterns without ccs prefixes when ccs is disabled and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(false), + moduleType: 'elasticsearch', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['metrics', '.monitoring-es-*,metrics-elasticsearch.*-*'], + ['logs', 'filebeat-*,logs-elasticsearch.*-*'], + ])( + 'returns elasticsearch index patterns without ccs prefixes when ccs is disabled but ccs request payload has a value and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(false), + ccs: 'myccs', + moduleType: 'elasticsearch', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [undefined, 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.*-*'], + ['metrics', 'myccs:.monitoring-es-*,myccs:metrics-elasticsearch.*-*'], + ['logs', 'myccs:filebeat-*,myccs:logs-elasticsearch.*-*'], + ])( + 'returns elasticsearch index patterns with custom ccs prefixes when ccs is enabled and ccs request payload has a value and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + ccs: 'myccs', + moduleType: 'elasticsearch', + }); + expect(indexPatterns).toBe(expected); + } + ); + it.each([ + [ + undefined, + '*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.*-*,metrics-elasticsearch.*-*', + ], + [ + 'metrics', + '*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.*-*,metrics-elasticsearch.*-*', + ], + ['logs', '*:filebeat-*,filebeat-*,*:logs-elasticsearch.*-*,logs-elasticsearch.*-*'], + ])( + 'returns elasticsearch index patterns with ccs prefixes and local index patterns when ccs is enabled and ccs request payload value is * and type %s', + (type, expected) => { + const indexPatterns = getNewIndexPatterns({ + type, + config: getConfigWithCcs(true), + ccs: '*', + moduleType: 'elasticsearch', + }); + expect(indexPatterns).toBe(expected); + } + ); + + it('returns logs-* index patterns without dataset and namespace', () => { const indexPatterns = getNewIndexPatterns({ + type: 'logs', config: getConfigWithCcs(false), - ccs: 'myccs', - moduleType: 'elasticsearch', - }); - expect(indexPatterns).toBe('.monitoring-es-*,metrics-elasticsearch.*-*'); - }); - it('returns elasticsearch index patterns with custom ccs prefixes when ccs is enabled and ccs request payload has a value', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - ccs: 'myccs', - moduleType: 'elasticsearch', - }); - expect(indexPatterns).toBe('myccs:.monitoring-es-*,myccs:metrics-elasticsearch.*-*'); - }); - it('returns elasticsearch index patterns with ccs prefixes and local index patterns when ccs is enabled and ccs request payload value is *', () => { - const indexPatterns = getNewIndexPatterns({ - config: getConfigWithCcs(true), - ccs: '*', - moduleType: 'elasticsearch', }); - expect(indexPatterns).toBe( - '*:.monitoring-es-*,.monitoring-es-*,*:metrics-elasticsearch.*-*,metrics-elasticsearch.*-*' - ); + expect(indexPatterns).toBe('filebeat-*,logs-*.*-*'); }); }); diff --git a/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.ts b/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.ts index 2ebf4fe6b480..1b7668c58508 100644 --- a/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.ts +++ b/x-pack/plugins/monitoring/server/lib/cluster/get_index_patterns.ts @@ -13,7 +13,7 @@ import { INDEX_PATTERN_LOGSTASH, INDEX_PATTERN_BEATS, INDEX_ALERTS, - DS_INDEX_PATTERN_TYPES, + DS_INDEX_PATTERN_LOGS, DS_INDEX_PATTERN_METRICS, INDEX_PATTERN_TYPES, INDEX_PATTERN_ENTERPRISE_SEARCH, @@ -21,6 +21,28 @@ import { } from '../../../common/constants'; import { MonitoringConfig } from '../../config'; +interface CommonIndexPatternArgs { + config: MonitoringConfig; + moduleType?: INDEX_PATTERN_TYPES; + dataset?: string; + namespace?: string; + ccs?: string; + ecsLegacyOnly?: boolean; +} + +// moduleType is mandatory when type is not informed or when type=metrics +interface MetricIndexPatternArgs extends CommonIndexPatternArgs { + type?: typeof DS_INDEX_PATTERN_METRICS; + moduleType: INDEX_PATTERN_TYPES; +} + +// moduleType is optional when type=logs +interface LogsIndexPatternArgs extends CommonIndexPatternArgs { + type: typeof DS_INDEX_PATTERN_LOGS; +} + +type IndexPatternArgs = MetricIndexPatternArgs | LogsIndexPatternArgs; + export function getIndexPatterns( config: MonitoringConfig, additionalPatterns: Record = {}, @@ -61,7 +83,7 @@ export function getLegacyIndexPattern({ config, ccs, }: { - moduleType: INDEX_PATTERN_TYPES; + moduleType: INDEX_PATTERN_TYPES | 'filebeat'; ecsLegacyOnly?: boolean; config: MonitoringConfig; ccs?: string; @@ -84,6 +106,9 @@ export function getLegacyIndexPattern({ case 'enterprisesearch': indexPattern = INDEX_PATTERN_ENTERPRISE_SEARCH; break; + case 'filebeat': + indexPattern = config.ui.logs.index; + break; default: throw new Error(`invalid module type to create index pattern: ${moduleType}`); } @@ -94,44 +119,37 @@ export function getDsIndexPattern({ type = DS_INDEX_PATTERN_METRICS, moduleType, dataset, - namespace = '*', + namespace, config, ccs, -}: { - type?: string; - dataset?: string; - moduleType: INDEX_PATTERN_TYPES; - namespace?: string; - config: MonitoringConfig; - ccs?: string; -}): string { - let datasetsPattern = ''; - if (dataset) { - datasetsPattern = `${moduleType}.${dataset}`; - } else { - datasetsPattern = `${moduleType}.*`; - } - return prefixIndexPatternWithCcs(config, `${type}-${datasetsPattern}-${namespace}`, ccs); +}: CommonIndexPatternArgs & { type?: string }): string { + const datasetsPattern = `${moduleType ?? '*'}.${dataset ?? '*'}`; + return prefixIndexPatternWithCcs(config, `${type}-${datasetsPattern}-${namespace ?? '*'}`, ccs); } -export function getNewIndexPatterns({ - config, - moduleType, - type = DS_INDEX_PATTERN_METRICS, - dataset, - namespace = '*', - ccs, - ecsLegacyOnly, -}: { - config: MonitoringConfig; - moduleType: INDEX_PATTERN_TYPES; - type?: DS_INDEX_PATTERN_TYPES; - dataset?: string; - namespace?: string; - ccs?: string; - ecsLegacyOnly?: boolean; -}): string { - const legacyIndexPattern = getLegacyIndexPattern({ moduleType, ecsLegacyOnly, config, ccs }); - const dsIndexPattern = getDsIndexPattern({ type, moduleType, dataset, namespace, config, ccs }); +export function getNewIndexPatterns(indexPattern: IndexPatternArgs): string { + const legacyModuleType = isLogIndexPattern(indexPattern) ? 'filebeat' : indexPattern.moduleType; + const { config, ccs, dataset, ecsLegacyOnly, moduleType, namespace, type } = indexPattern; + + const legacyIndexPattern = getLegacyIndexPattern({ + moduleType: legacyModuleType, + ecsLegacyOnly, + config, + ccs, + }); + + const dsIndexPattern = getDsIndexPattern({ + type, + moduleType, + dataset, + namespace, + config, + ccs, + }); + return `${legacyIndexPattern},${dsIndexPattern}`; } + +const isLogIndexPattern = (args: IndexPatternArgs): args is LogsIndexPatternArgs => { + return (args as LogsIndexPatternArgs).type === 'logs'; +}; diff --git a/x-pack/plugins/monitoring/server/lib/logs/detect_reason.ts b/x-pack/plugins/monitoring/server/lib/logs/detect_reason.ts index e9b906af677e..7863e49d858d 100644 --- a/x-pack/plugins/monitoring/server/lib/logs/detect_reason.ts +++ b/x-pack/plugins/monitoring/server/lib/logs/detect_reason.ts @@ -7,8 +7,9 @@ import { LegacyRequest } from '../../types'; import { createTimeFilter } from '../create_query'; +import { elasticsearchLogsFilter } from './logs_filter'; -export interface FilebeatIndexCheckOpts { +export interface LogsIndexCheckOpts { start: number; end: number; clusterUuid?: string; @@ -16,15 +17,14 @@ export interface FilebeatIndexCheckOpts { indexUuid?: string; } -async function doesFilebeatIndexExist( +async function doesLogsIndexExist( req: LegacyRequest, - filebeatIndexPattern: string, - { start, end, clusterUuid, nodeUuid, indexUuid }: FilebeatIndexCheckOpts + logsIndexPattern: string, + { start, end, clusterUuid, nodeUuid, indexUuid }: LogsIndexCheckOpts ) { const metric = { timestampField: '@timestamp' }; const filter = [createTimeFilter({ start, end, metric })]; - const typeFilter = { term: { 'service.type': 'elasticsearch' } }; const structuredLogsFilter = { exists: { field: 'elasticsearch.cluster' } }; const clusterFilter = { term: { 'elasticsearch.cluster.uuid': clusterUuid } }; const nodeFilter = { term: { 'elasticsearch.node.id': nodeUuid } }; @@ -41,7 +41,7 @@ async function doesFilebeatIndexExist( const typeExistsAtAnyTimeQuery = { query: { bool: { - filter: [typeFilter], + filter: [elasticsearchLogsFilter], }, }, }; @@ -49,7 +49,7 @@ async function doesFilebeatIndexExist( const typeExistsQuery = { query: { bool: { - filter: [...filter, typeFilter], + filter: [...filter, elasticsearchLogsFilter], }, }, }; @@ -57,7 +57,7 @@ async function doesFilebeatIndexExist( const usingStructuredLogsQuery = { query: { bool: { - filter: [...filter, typeFilter, structuredLogsFilter], + filter: [...filter, elasticsearchLogsFilter, structuredLogsFilter], }, }, }; @@ -65,7 +65,7 @@ async function doesFilebeatIndexExist( const clusterExistsQuery = { query: { bool: { - filter: [...filter, typeFilter, clusterFilter], + filter: [...filter, elasticsearchLogsFilter, clusterFilter], }, }, }; @@ -73,7 +73,7 @@ async function doesFilebeatIndexExist( const nodeExistsQuery = { query: { bool: { - filter: [...filter, typeFilter, clusterFilter, nodeFilter], + filter: [...filter, elasticsearchLogsFilter, clusterFilter, nodeFilter], }, }, }; @@ -81,7 +81,7 @@ async function doesFilebeatIndexExist( const indexExistsQuery = { query: { bool: { - filter: [...filter, typeFilter, clusterFilter, indexFilter], + filter: [...filter, elasticsearchLogsFilter, clusterFilter, indexFilter], }, }, }; @@ -91,28 +91,28 @@ async function doesFilebeatIndexExist( }; const body = [ - { index: filebeatIndexPattern }, + { index: logsIndexPattern }, { ...defaultParams }, - { index: filebeatIndexPattern }, + { index: logsIndexPattern }, { ...defaultParams, ...indexPatternExistsQuery }, - { index: filebeatIndexPattern }, + { index: logsIndexPattern }, { ...defaultParams, ...typeExistsAtAnyTimeQuery }, - { index: filebeatIndexPattern }, + { index: logsIndexPattern }, { ...defaultParams, ...typeExistsQuery }, - { index: filebeatIndexPattern }, + { index: logsIndexPattern }, { ...defaultParams, ...usingStructuredLogsQuery }, ]; if (clusterUuid) { - body.push(...[{ index: filebeatIndexPattern }, { ...defaultParams, ...clusterExistsQuery }]); + body.push(...[{ index: logsIndexPattern }, { ...defaultParams, ...clusterExistsQuery }]); } if (nodeUuid) { - body.push(...[{ index: filebeatIndexPattern }, { ...defaultParams, ...nodeExistsQuery }]); + body.push(...[{ index: logsIndexPattern }, { ...defaultParams, ...nodeExistsQuery }]); } if (indexUuid) { - body.push(...[{ index: filebeatIndexPattern }, { ...defaultParams, ...indexExistsQuery }]); + body.push(...[{ index: logsIndexPattern }, { ...defaultParams, ...indexExistsQuery }]); } const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); @@ -144,8 +144,8 @@ async function doesFilebeatIndexExist( export async function detectReason( req: LegacyRequest, - filebeatIndexPattern: string, - opts: FilebeatIndexCheckOpts + logsIndexPattern: string, + opts: LogsIndexCheckOpts ) { - return await doesFilebeatIndexExist(req, filebeatIndexPattern, opts); + return await doesLogsIndexExist(req, logsIndexPattern, opts); } diff --git a/x-pack/plugins/monitoring/server/lib/logs/get_log_types.ts b/x-pack/plugins/monitoring/server/lib/logs/get_log_types.ts index 2346fdd6f453..879069f2f565 100644 --- a/x-pack/plugins/monitoring/server/lib/logs/get_log_types.ts +++ b/x-pack/plugins/monitoring/server/lib/logs/get_log_types.ts @@ -10,7 +10,8 @@ import { createTimeFilter, TimerangeFilter } from '../create_query'; import { detectReason } from './detect_reason'; import { detectReasonFromException } from './detect_reason_from_exception'; import { LegacyRequest } from '../../types'; -import { FilebeatResponse } from '../../../common/types/filebeat'; +import { LogsResponse } from '../../../common/types/logs'; +import { elasticsearchLogsFilter } from './logs_filter'; interface LogType { level?: string; @@ -18,9 +19,9 @@ interface LogType { } async function handleResponse( - response: FilebeatResponse, + response: LogsResponse, req: LegacyRequest, - filebeatIndexPattern: string, + logsIndexPattern: string, opts: { clusterUuid?: string; nodeUuid?: string; indexUuid?: string; start: number; end: number } ) { const result: { enabled: boolean; types: LogType[]; reason?: any } = { @@ -43,7 +44,7 @@ async function handleResponse( }; }); } else { - result.reason = await detectReason(req, filebeatIndexPattern, opts); + result.reason = await detectReason(req, logsIndexPattern, opts); } return result; @@ -51,7 +52,7 @@ async function handleResponse( export async function getLogTypes( req: LegacyRequest, - filebeatIndexPattern: string, + logsIndexPattern: string, { clusterUuid, nodeUuid, @@ -60,13 +61,14 @@ export async function getLogTypes( end, }: { clusterUuid?: string; nodeUuid?: string; indexUuid?: string; start: number; end: number } ) { - checkParam(filebeatIndexPattern, 'filebeatIndexPattern in logs/getLogTypes'); + checkParam(logsIndexPattern, 'logsIndexPattern in logs/getLogTypes'); const metric = { timestampField: '@timestamp' }; + const filter: Array<{ term: { [x: string]: string } } | TimerangeFilter | null> = [ - { term: { 'service.type': 'elasticsearch' } }, createTimeFilter({ start, end, metric }), ]; + if (clusterUuid) { filter.push({ term: { 'elasticsearch.cluster.uuid': clusterUuid } }); } @@ -78,7 +80,7 @@ export async function getLogTypes( } const params = { - index: filebeatIndexPattern, + index: logsIndexPattern, size: 0, filter_path: ['aggregations.levels.buckets', 'aggregations.types.buckets'], ignore_unavailable: true, @@ -86,7 +88,7 @@ export async function getLogTypes( sort: { '@timestamp': { order: 'desc', unmapped_type: 'long' } }, query: { bool: { - filter, + filter: [elasticsearchLogsFilter, ...filter], }, }, aggs: { @@ -113,7 +115,7 @@ export async function getLogTypes( }; try { const response = await callWithRequest(req, 'search', params); - result = await handleResponse(response, req, filebeatIndexPattern, { + result = await handleResponse(response, req, logsIndexPattern, { clusterUuid, nodeUuid, indexUuid, diff --git a/x-pack/plugins/monitoring/server/lib/logs/get_logs.ts b/x-pack/plugins/monitoring/server/lib/logs/get_logs.ts index c243414c3649..5d49a7b50b06 100644 --- a/x-pack/plugins/monitoring/server/lib/logs/get_logs.ts +++ b/x-pack/plugins/monitoring/server/lib/logs/get_logs.ts @@ -7,13 +7,14 @@ import moment from 'moment'; import { checkParam } from '../error_missing_required'; -import { createTimeFilter } from '../create_query'; -import { detectReason, FilebeatIndexCheckOpts } from './detect_reason'; +import { createTimeFilter, TimerangeFilter } from '../create_query'; +import { detectReason, LogsIndexCheckOpts } from './detect_reason'; +import { elasticsearchLogsFilter } from './logs_filter'; import { formatUTCTimestampForTimezone } from '../format_timezone'; import { getTimezone } from '../get_timezone'; import { detectReasonFromException } from './detect_reason_from_exception'; import { LegacyRequest } from '../../types'; -import { FilebeatResponse } from '../../../common/types/filebeat'; +import { LogsResponse } from '../../../common/types/logs'; import { MonitoringConfig } from '../../config'; interface Log { @@ -27,10 +28,10 @@ interface Log { } async function handleResponse( - response: FilebeatResponse, + response: LogsResponse, req: LegacyRequest, - filebeatIndexPattern: string, - opts: FilebeatIndexCheckOpts + logsIndexPattern: string, + opts: LogsIndexCheckOpts ) { const result: { enabled: boolean; logs: Log[]; reason?: any } = { enabled: false, @@ -57,7 +58,7 @@ async function handleResponse( }; }); } else { - result.reason = await detectReason(req, filebeatIndexPattern, opts); + result.reason = await detectReason(req, logsIndexPattern, opts); } return result; @@ -66,16 +67,17 @@ async function handleResponse( export async function getLogs( config: MonitoringConfig, req: LegacyRequest, - filebeatIndexPattern: string, - { clusterUuid, nodeUuid, indexUuid, start, end }: FilebeatIndexCheckOpts + logsIndexPattern: string, + { clusterUuid, nodeUuid, indexUuid, start, end }: LogsIndexCheckOpts ) { - checkParam(filebeatIndexPattern, 'filebeatIndexPattern in logs/getLogs'); + checkParam(logsIndexPattern, 'logsIndexPattern in logs/getLogs'); const metric = { timestampField: '@timestamp' }; - const filter: any[] = [ - { term: { 'service.type': 'elasticsearch' } }, + + const filter: Array<{ term: { [x: string]: string } } | TimerangeFilter | null> = [ createTimeFilter({ start, end, metric }), ]; + if (clusterUuid) { filter.push({ term: { 'elasticsearch.cluster.uuid': clusterUuid } }); } @@ -87,7 +89,7 @@ export async function getLogs( } const params = { - index: filebeatIndexPattern, + index: logsIndexPattern, size: Math.min(50, config.ui.elasticsearch.logFetchCount), filter_path: [ 'hits.hits._source.message', @@ -103,7 +105,7 @@ export async function getLogs( sort: { '@timestamp': { order: 'desc', unmapped_type: 'long' } }, query: { bool: { - filter, + filter: [elasticsearchLogsFilter, ...filter], }, }, }, @@ -116,8 +118,8 @@ export async function getLogs( logs: [], }; try { - const response: FilebeatResponse = await callWithRequest(req, 'search', params); - result = await handleResponse(response, req, filebeatIndexPattern, { + const response: LogsResponse = await callWithRequest(req, 'search', params); + result = await handleResponse(response, req, logsIndexPattern, { clusterUuid, nodeUuid, indexUuid, diff --git a/x-pack/plugins/monitoring/server/lib/logs/init_infra_source.ts b/x-pack/plugins/monitoring/server/lib/logs/init_infra_source.ts index e59950826985..4f3dc9ada98a 100644 --- a/x-pack/plugins/monitoring/server/lib/logs/init_infra_source.ts +++ b/x-pack/plugins/monitoring/server/lib/logs/init_infra_source.ts @@ -7,22 +7,23 @@ // @ts-ignore import { InfraPluginSetup } from '@kbn/infra-plugin/server'; -import { prefixIndexPatternWithCcs } from '../../../common/ccs_utils'; import { CCS_REMOTE_PATTERN, INFRA_SOURCE_ID } from '../../../common/constants'; import { MonitoringConfig } from '../../config'; +import { getNewIndexPatterns } from '../cluster/get_index_patterns'; export const initInfraSource = (config: MonitoringConfig, infraPlugin: InfraPluginSetup) => { if (infraPlugin) { - const filebeatIndexPattern = prefixIndexPatternWithCcs( + const logsIndexPattern = getNewIndexPatterns({ config, - config.ui.logs.index, - CCS_REMOTE_PATTERN - ); + type: 'logs', + ccs: CCS_REMOTE_PATTERN, + }); + infraPlugin.defineInternalSourceConfiguration(INFRA_SOURCE_ID, { name: 'Elastic Stack Logs', logIndices: { type: 'index_name', - indexName: filebeatIndexPattern, + indexName: logsIndexPattern, }, }); } diff --git a/x-pack/plugins/monitoring/server/lib/logs/logs_filter.ts b/x-pack/plugins/monitoring/server/lib/logs/logs_filter.ts new file mode 100644 index 000000000000..bf4c83cc4699 --- /dev/null +++ b/x-pack/plugins/monitoring/server/lib/logs/logs_filter.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const elasticsearchLogsFilter = { + bool: { + should: [{ term: { 'service.type': 'elasticsearch' } }], + }, +}; diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/cluster/cluster.ts b/x-pack/plugins/monitoring/server/routes/api/v1/cluster/cluster.ts index 6bd0a19d79c5..864b2beec5b7 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/cluster/cluster.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/cluster/cluster.ts @@ -12,7 +12,6 @@ import { } from '../../../../../common/http_api/cluster'; import { createValidationFunction } from '../../../../lib/create_route_validation_function'; import { getClustersFromRequest } from '../../../../lib/cluster/get_clusters_from_request'; -import { getIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; import { handleError } from '../../../../lib/errors'; import { MonitoringCore } from '../../../../types'; @@ -32,11 +31,6 @@ export function clusterRoute(server: MonitoringCore) { body: validateBody, }, handler: async (req) => { - const config = server.config; - - const indexPatterns = getIndexPatterns(config, { - filebeatIndexPattern: config.ui.logs.index, - }); const options = { clusterUuid: req.params.clusterUuid, start: req.payload.timeRange.min, @@ -45,7 +39,7 @@ export function clusterRoute(server: MonitoringCore) { }; try { - const clusters = await getClustersFromRequest(req, indexPatterns, options); + const clusters = await getClustersFromRequest(req, options); return postClusterResponsePayloadRT.encode(clusters); } catch (err) { throw handleError(err, req); diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/cluster/clusters.ts b/x-pack/plugins/monitoring/server/routes/api/v1/cluster/clusters.ts index 9591dda20548..1e5883360d09 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/cluster/clusters.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/cluster/clusters.ts @@ -10,7 +10,6 @@ import { postClustersResponsePayloadRT, } from '../../../../../common/http_api/cluster'; import { getClustersFromRequest } from '../../../../lib/cluster/get_clusters_from_request'; -import { getIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; import { createValidationFunction } from '../../../../lib/create_route_validation_function'; import { verifyMonitoringAuth } from '../../../../lib/elasticsearch/verify_monitoring_auth'; import { handleError } from '../../../../lib/errors'; @@ -32,17 +31,13 @@ export function clustersRoute(server: MonitoringCore) { body: validateBody, }, handler: async (req) => { - const config = server.config; - // NOTE using try/catch because checkMonitoringAuth is expected to throw // an error when current logged-in user doesn't have permission to read // the monitoring data. `try/catch` makes it a little more explicit. try { await verifyMonitoringAuth(req); - const indexPatterns = getIndexPatterns(config, { - filebeatIndexPattern: config.ui.logs.index, - }); - const clusters = await getClustersFromRequest(req, indexPatterns, { + + const clusters = await getClustersFromRequest(req, { codePaths: req.payload.codePaths, }); return postClustersResponsePayloadRT.encode(clusters); diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/index_detail.ts b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/index_detail.ts index 1d31064f71eb..68d1e4ed041d 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/index_detail.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/index_detail.ts @@ -6,7 +6,6 @@ */ import { get } from 'lodash'; -import { prefixIndexPatternWithCcs } from '../../../../../common/ccs_utils'; import { CCS_REMOTE_PATTERN } from '../../../../../common/constants'; import { postElasticsearchIndexDetailRequestParamsRT, @@ -14,6 +13,7 @@ import { postElasticsearchIndexDetailResponsePayloadRT, } from '../../../../../common/http_api/elasticsearch'; import { getClusterStats } from '../../../../lib/cluster/get_cluster_stats'; +import { getNewIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; import { createValidationFunction } from '../../../../lib/create_route_validation_function'; import { getMetrics } from '../../../../lib/details/get_metrics'; import { getIndexSummary } from '../../../../lib/elasticsearch/indices'; @@ -43,11 +43,14 @@ export function esIndexRoute(server: MonitoringCore) { const indexUuid = req.params.id; const start = req.payload.timeRange.min; const end = req.payload.timeRange.max; - const filebeatIndexPattern = prefixIndexPatternWithCcs( + + const logsIndexPattern = getNewIndexPatterns({ config, - config.ui.logs.index, - CCS_REMOTE_PATTERN - ); + type: 'logs', + moduleType: 'elasticsearch', + ccs: CCS_REMOTE_PATTERN, + }); + const isAdvanced = req.payload.is_advanced; const metricSet = isAdvanced ? metricSetAdvanced : metricSetOverview; @@ -93,7 +96,7 @@ export function esIndexRoute(server: MonitoringCore) { }; const shards = await getShardAllocation(req, allocationOptions); - logs = await getLogs(config, req, filebeatIndexPattern, { + logs = await getLogs(config, req, logsIndexPattern, { clusterUuid, indexUuid, start, diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/node_detail.ts b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/node_detail.ts index 85ba1d1a2bb8..072340df2879 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/node_detail.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/node_detail.ts @@ -6,7 +6,7 @@ */ import { get } from 'lodash'; -import { prefixIndexPatternWithCcs } from '../../../../../common/ccs_utils'; + import { CCS_REMOTE_PATTERN } from '../../../../../common/constants'; import { postElasticsearchNodeDetailRequestParamsRT, @@ -14,6 +14,7 @@ import { postElasticsearchNodeDetailResponsePayloadRT, } from '../../../../../common/http_api/elasticsearch'; import { getClusterStats } from '../../../../lib/cluster/get_cluster_stats'; +import { getNewIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; import { createValidationFunction } from '../../../../lib/create_route_validation_function'; import { getMetrics, @@ -47,11 +48,14 @@ export function esNodeRoute(server: MonitoringCore) { const nodeUuid = req.params.nodeUuid; const start = req.payload.timeRange.min; const end = req.payload.timeRange.max; - const filebeatIndexPattern = prefixIndexPatternWithCcs( + + const logsIndexPattern = getNewIndexPatterns({ config, - config.ui.logs.index, - CCS_REMOTE_PATTERN - ); + type: 'logs', + moduleType: 'elasticsearch', + ccs: CCS_REMOTE_PATTERN, + }); + const isAdvanced = req.payload.is_advanced; let metricSet: MetricDescriptor[]; @@ -127,7 +131,7 @@ export function esNodeRoute(server: MonitoringCore) { stateUuid, // for debugging/troubleshooting }; - logs = await getLogs(config, req, filebeatIndexPattern, { + logs = await getLogs(config, req, logsIndexPattern, { clusterUuid, nodeUuid, start, diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/overview.ts b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/overview.ts index 52410dd09f8d..01e4dda4e6a8 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/overview.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch/overview.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { prefixIndexPatternWithCcs } from '../../../../../common/ccs_utils'; import { CCS_REMOTE_PATTERN } from '../../../../../common/constants'; import { postElasticsearchOverviewRequestParamsRT, @@ -14,6 +13,7 @@ import { } from '../../../../../common/http_api/elasticsearch'; import { getClusterStats } from '../../../../lib/cluster/get_cluster_stats'; import { getClusterStatus } from '../../../../lib/cluster/get_cluster_status'; +import { getNewIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; import { createValidationFunction } from '../../../../lib/create_route_validation_function'; import { getMetrics } from '../../../../lib/details/get_metrics'; import { getLastRecovery } from '../../../../lib/elasticsearch/get_last_recovery'; @@ -37,11 +37,14 @@ export function esOverviewRoute(server: MonitoringCore) { async handler(req) { const config = server.config; const clusterUuid = req.params.clusterUuid; - const filebeatIndexPattern = prefixIndexPatternWithCcs( + + const logsIndexPattern = getNewIndexPatterns({ config, - config.ui.logs.index, - CCS_REMOTE_PATTERN - ); + type: 'logs', + moduleType: 'elasticsearch', + ccs: CCS_REMOTE_PATTERN, + }); + const { min: start, max: end } = req.payload.timeRange; try { @@ -50,7 +53,7 @@ export function esOverviewRoute(server: MonitoringCore) { getMetrics(req, 'elasticsearch', metricSet), getLastRecovery(req, config.ui.max_bucket_size), // TODO this call is missing some items from the signature of `getLogs`, will need to resolve during TS conversion - getLogs(config, req, filebeatIndexPattern, { clusterUuid, start, end }), + getLogs(config, req, logsIndexPattern, { clusterUuid, start, end }), ]); const indicesUnassignedShardStats = await getIndicesUnassignedShardStats(req, clusterStats); From 09c6cc25deca99e058425ddd86a96544ebedab7d Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Fri, 26 Aug 2022 13:16:52 +0200 Subject: [PATCH 27/50] [Files] Add `cache-control` headers to file download response (#139375) * refactor test helpers for clarity * added header cache --- .../files/server/routes/common.test.ts | 23 ++++++++++++------- x-pack/plugins/files/server/routes/common.ts | 1 + 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/files/server/routes/common.test.ts b/x-pack/plugins/files/server/routes/common.test.ts index cc22b0d8afb0..a8a1a5403c89 100644 --- a/x-pack/plugins/files/server/routes/common.test.ts +++ b/x-pack/plugins/files/server/routes/common.test.ts @@ -9,40 +9,47 @@ import type { File } from '../file'; import { getDownloadHeadersForFile } from './common'; describe('getDownloadHeadersForFile', () => { - function t({ cd, ct }: { cd: string; ct: string }) { + function expectHeaders({ + contentDisposition, + contentType, + }: { + contentDisposition: string; + contentType: string; + }) { return { - 'content-type': ct, - 'content-disposition': `attachment; filename="${cd}"`, + 'content-type': contentType, + 'content-disposition': `attachment; filename="${contentDisposition}"`, + 'cache-control': 'max-age=31536000, immutable', }; } const file = { data: { name: 'test', mimeType: undefined } } as unknown as File; test('no mime type and name from file object', () => { expect(getDownloadHeadersForFile(file, undefined)).toEqual( - t({ ct: 'application/octet-stream', cd: 'test' }) + expectHeaders({ contentType: 'application/octet-stream', contentDisposition: 'test' }) ); }); test('no mime type and name (without ext)', () => { expect(getDownloadHeadersForFile(file, 'myfile')).toEqual( - t({ ct: 'application/octet-stream', cd: 'myfile' }) + expectHeaders({ contentType: 'application/octet-stream', contentDisposition: 'myfile' }) ); }); test('no mime type and name (with ext)', () => { expect(getDownloadHeadersForFile(file, 'myfile.png')).toEqual( - t({ ct: 'image/png', cd: 'myfile.png' }) + expectHeaders({ contentType: 'image/png', contentDisposition: 'myfile.png' }) ); }); test('mime type and no name', () => { const fileWithMime = { data: { ...file.data, mimeType: 'application/pdf' } } as File; expect(getDownloadHeadersForFile(fileWithMime, undefined)).toEqual( - t({ ct: 'application/pdf', cd: 'test' }) + expectHeaders({ contentType: 'application/pdf', contentDisposition: 'test' }) ); }); test('mime type and name', () => { const fileWithMime = { data: { ...file.data, mimeType: 'application/pdf' } } as File; expect(getDownloadHeadersForFile(fileWithMime, 'a cool file.pdf')).toEqual( - t({ ct: 'application/pdf', cd: 'a cool file.pdf' }) + expectHeaders({ contentType: 'application/pdf', contentDisposition: 'a cool file.pdf' }) ); }); }); diff --git a/x-pack/plugins/files/server/routes/common.ts b/x-pack/plugins/files/server/routes/common.ts index f8a3a1965267..8bfc7753efe3 100644 --- a/x-pack/plugins/files/server/routes/common.ts +++ b/x-pack/plugins/files/server/routes/common.ts @@ -14,6 +14,7 @@ export function getDownloadHeadersForFile(file: File, fileName?: string): Respon (fileName && mime.getType(fileName)) ?? file.data.mimeType ?? 'application/octet-stream', // Note, this name can be overridden by the client if set via a "download" attribute on the HTML tag. 'content-disposition': `attachment; filename="${fileName || getDownloadedFileName(file)}"`, + 'cache-control': 'max-age=31536000, immutable', }; } From 16930a024668b831eb03252fba05085b2118cb80 Mon Sep 17 00:00:00 2001 From: Maxim Kholod Date: Fri, 26 Aug 2022 14:03:03 +0200 Subject: [PATCH 28/50] [TIP] make expand button color primamry when flyout is closed (#139482) * [TIP] make expand button color primamry when flyout is closed * [TIP] add isOpen prop to storybook --- .../open_indicator_flyout_button.stories.tsx | 6 ++++++ .../open_indicator_flyout_button.tsx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.stories.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.stories.tsx index c5289adf51c2..c64e2c5ebc06 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.stories.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.stories.tsx @@ -17,6 +17,12 @@ export default { title: 'OpenIndicatorFlyoutButton', argTypes: { onOpen: { action: 'onOpen' }, + isOpen: { + options: [true, false], + control: { + type: 'radio', + }, + }, }, }; diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.tsx b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.tsx index 869fc9c4c5b4..48900019265c 100644 --- a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.tsx +++ b/x-pack/plugins/threat_intelligence/public/modules/indicators/components/open_indicator_flyout_button/open_indicator_flyout_button.tsx @@ -46,7 +46,7 @@ export const OpenIndicatorFlyoutButton: VFC = ({ Date: Fri, 26 Aug 2022 13:24:19 +0100 Subject: [PATCH 29/50] Fix race condition when running validation (#139385) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../static/forms/hook_form_lib/hooks/use_field.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts index 7ba06304b971..206db21b50a0 100644 --- a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts +++ b/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts @@ -633,13 +633,6 @@ export const useField = ( setIsChangingValue(false); } }); - - return () => { - if (debounceTimeout.current) { - clearTimeout(debounceTimeout.current); - debounceTimeout.current = null; - } - }; }, [valueHasChanged, runValidationsOnValueChange]); // Value change: set "isModified" state @@ -676,6 +669,11 @@ export const useField = ( return () => { isMounted.current = false; + + if (debounceTimeout.current) { + clearTimeout(debounceTimeout.current); + debounceTimeout.current = null; + } }; }, []); From 5cb0c010727e0ef1c13b643a09701cc11331f43e Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Fri, 26 Aug 2022 14:37:17 +0200 Subject: [PATCH 30/50] Use "compatibility" rather than "availability" on connectors table (#139024) * Use compatibility rather than availability on connectors table * Replace Availability with Compatibility in create connector flyout. --- .../common/connector_feature_config.test.ts | 19 +- .../common/connector_feature_config.ts | 52 +- .../translations/translations/fr-FR.json | 2 - .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - .../create_connector_flyout/header.tsx | 19 +- .../create_connector_flyout/index.test.tsx | 7 +- .../create_connector_flyout/index.tsx | 3 +- .../actions_connectors_list.test.tsx | 1052 +++++++++-------- .../components/actions_connectors_list.tsx | 30 +- .../triggers_actions_ui/public/types.ts | 2 +- 11 files changed, 655 insertions(+), 535 deletions(-) diff --git a/x-pack/plugins/actions/common/connector_feature_config.test.ts b/x-pack/plugins/actions/common/connector_feature_config.test.ts index 078a9110564d..5aea0a7c72bd 100644 --- a/x-pack/plugins/actions/common/connector_feature_config.test.ts +++ b/x-pack/plugins/actions/common/connector_feature_config.test.ts @@ -5,7 +5,11 @@ * 2.0. */ -import { areValidFeatures, getConnectorFeatureName } from './connector_feature_config'; +import { + areValidFeatures, + getConnectorCompatibility, + getConnectorFeatureName, +} from './connector_feature_config'; describe('areValidFeatures', () => { it('returns true when all inputs are valid features', () => { @@ -35,3 +39,16 @@ describe('getConnectorFeatureName', () => { expect(getConnectorFeatureName('foo')).toEqual('foo'); }); }); + +describe('getConnectorCompatibility', () => { + it('returns the compatibility list for valid feature ids', () => { + expect(getConnectorCompatibility(['alerting', 'cases', 'uptime', 'siem'])).toEqual([ + 'Alerting Rules', + 'Cases', + ]); + }); + + it('skips invalid feature ids', () => { + expect(getConnectorCompatibility(['foo', 'bar', 'cases'])).toEqual(['Cases']); + }); +}); diff --git a/x-pack/plugins/actions/common/connector_feature_config.ts b/x-pack/plugins/actions/common/connector_feature_config.ts index 2395bc59b403..6e9adab5de5a 100644 --- a/x-pack/plugins/actions/common/connector_feature_config.ts +++ b/x-pack/plugins/actions/common/connector_feature_config.ts @@ -18,6 +18,7 @@ interface ConnectorFeatureConfig { * This will be displayed to end-users, so a translatable string is advised for i18n. */ name: string; + compatibility: string; } export const AlertingConnectorFeatureId = 'alerting'; @@ -25,11 +26,26 @@ export const CasesConnectorFeatureId = 'cases'; export const UptimeConnectorFeatureId = 'uptime'; export const SecurityConnectorFeatureId = 'siem'; +const compatibilityAlertingRules = i18n.translate( + 'xpack.actions.availableConnectorFeatures.compatibility.alertingRules', + { + defaultMessage: 'Alerting Rules', + } +); + +const compatibilityCases = i18n.translate( + 'xpack.actions.availableConnectorFeatures.compatibility.cases', + { + defaultMessage: 'Cases', + } +); + export const AlertingConnectorFeature: ConnectorFeatureConfig = { id: AlertingConnectorFeatureId, name: i18n.translate('xpack.actions.availableConnectorFeatures.alerting', { defaultMessage: 'Alerting', }), + compatibility: compatibilityAlertingRules, }; export const CasesConnectorFeature: ConnectorFeatureConfig = { @@ -37,6 +53,7 @@ export const CasesConnectorFeature: ConnectorFeatureConfig = { name: i18n.translate('xpack.actions.availableConnectorFeatures.cases', { defaultMessage: 'Cases', }), + compatibility: compatibilityCases, }; export const UptimeConnectorFeature: ConnectorFeatureConfig = { @@ -44,6 +61,7 @@ export const UptimeConnectorFeature: ConnectorFeatureConfig = { name: i18n.translate('xpack.actions.availableConnectorFeatures.uptime', { defaultMessage: 'Uptime', }), + compatibility: compatibilityAlertingRules, }; export const SecuritySolutionFeature: ConnectorFeatureConfig = { @@ -51,23 +69,35 @@ export const SecuritySolutionFeature: ConnectorFeatureConfig = { name: i18n.translate('xpack.actions.availableConnectorFeatures.securitySolution', { defaultMessage: 'Security Solution', }), + compatibility: compatibilityAlertingRules, }; -const AllAvailableConnectorFeatures: ConnectorFeatureConfig[] = [ - AlertingConnectorFeature, - CasesConnectorFeature, - UptimeConnectorFeature, - SecuritySolutionFeature, -]; +const AllAvailableConnectorFeatures = { + [AlertingConnectorFeature.id]: AlertingConnectorFeature, + [CasesConnectorFeature.id]: CasesConnectorFeature, + [UptimeConnectorFeature.id]: UptimeConnectorFeature, + [SecuritySolutionFeature.id]: SecuritySolutionFeature, +}; export function areValidFeatures(ids: string[]) { - return ids.every( - (id: string) => - !!AllAvailableConnectorFeatures.find((config: ConnectorFeatureConfig) => config.id === id) - ); + return ids.every((id: string) => !!AllAvailableConnectorFeatures[id]); } export function getConnectorFeatureName(id: string) { - const featureConfig = AllAvailableConnectorFeatures.find((config) => config.id === id); + const featureConfig = AllAvailableConnectorFeatures[id]; return featureConfig ? featureConfig.name : id; } + +export function getConnectorCompatibility(featureIds?: string[]): string[] { + const compatibility = new Set(); + + if (featureIds && featureIds.length > 0) { + for (const featureId of featureIds) { + if (AllAvailableConnectorFeatures[featureId]) { + compatibility.add(AllAvailableConnectorFeatures[featureId].compatibility); + } + } + } + + return Array.from(compatibility); +} diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 8d405c00cc55..655833491343 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -32647,7 +32647,6 @@ "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorDisabledDescription": "Impossible d'exécuter les connecteurs", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorName": "Exécuter", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actionTypeTitle": "Type", - "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.featureIdsTitle": "Disponibilité", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.fixButtonLabel": "Corriger", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.nameTitle": "Nom", "xpack.triggersActionsUI.sections.actionsConnectorsList.filters.actionTypeIdName": "Type", @@ -32675,7 +32674,6 @@ "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "La méthode de mise à jour du cas est requise.", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "La méthode est requise.", - "xpack.triggersActionsUI.sections.addConnectorForm.flyoutHeaderAvailability": "Disponibilité :", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "Sélectionner un connecteur", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "Création de \"{connectorName}\" effectuée", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "Annuler", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 92f7bb0888cd..5a6e17d82c29 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -32622,7 +32622,6 @@ "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorDisabledDescription": "コネクターを実行できません", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorName": "実行", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actionTypeTitle": "型", - "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.featureIdsTitle": "可用性", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.fixButtonLabel": "修正", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.nameTitle": "名前", "xpack.triggersActionsUI.sections.actionsConnectorsList.filters.actionTypeIdName": "型", @@ -32650,7 +32649,6 @@ "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "ケースメソッドの更新は必須です。", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "ユーザー名が必要です。", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "メソッドが必要です。", - "xpack.triggersActionsUI.sections.addConnectorForm.flyoutHeaderAvailability": "可用性:", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "コネクターを選択", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "「{connectorName}」を作成しました", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "キャンセル", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 4884259e023c..107dcec2ce65 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -32656,7 +32656,6 @@ "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorDisabledDescription": "无法运行连接器", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actions.runConnectorName": "运行", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.actionTypeTitle": "类型", - "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.featureIdsTitle": "可用性", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.fixButtonLabel": "修复", "xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.nameTitle": "名称", "xpack.triggersActionsUI.sections.actionsConnectorsList.filters.actionTypeIdName": "类型", @@ -32684,7 +32683,6 @@ "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "“更新案例方法”必填。", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "“用户名”必填。", "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "“方法”必填", - "xpack.triggersActionsUI.sections.addConnectorForm.flyoutHeaderAvailability": "可用性:", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "选择连接器", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "已创建“{connectorName}”", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "取消", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/header.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/header.tsx index 6369ec5a2dcb..2c12431dc12c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/header.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/header.tsx @@ -19,14 +19,13 @@ import { EuiBetaBadge, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getConnectorFeatureName } from '@kbn/actions-plugin/common'; import { betaBadgeProps } from '../beta_badge_props'; interface Props { icon?: IconType | null; actionTypeName?: string | null; actionTypeMessage?: string | null; - featureIds?: string[] | null; + compatibility?: string[] | null; isExperimental?: boolean; } @@ -34,7 +33,7 @@ const FlyoutHeaderComponent: React.FC = ({ icon, actionTypeName, actionTypeMessage, - featureIds, + compatibility, isExperimental, }) => { return ( @@ -74,23 +73,23 @@ const FlyoutHeaderComponent: React.FC = ({ {actionTypeMessage} - {featureIds && featureIds.length > 0 && ( + {compatibility && compatibility.length > 0 && ( <> {' '} - {featureIds.map((featureId: string) => ( - - {getConnectorFeatureName(featureId)} + {compatibility.map((compatibilityItem: string) => ( + + {compatibilityItem} ))} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx index 722667921ad2..f432f8fd6634 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx @@ -246,7 +246,7 @@ describe('CreateConnectorFlyout', () => { expect(getByText('Select a connector')).toBeInTheDocument(); }); - it('shows the feature id badges when the connector type is selected', async () => { + it('shows the compatibility badges when the connector type is selected', async () => { const { getByTestId, getByText } = appMockRenderer.render( { expect(getByTestId('test-connector-text-field')).toBeInTheDocument(); }); - expect(getByTestId('create-connector-flyout-header-availability')).toBeInTheDocument(); - expect(getByText('Alerting')).toBeInTheDocument(); - expect(getByText('Security Solution')).toBeInTheDocument(); + expect(getByTestId('create-connector-flyout-header-compatibility')).toBeInTheDocument(); + expect(getByText('Alerting Rules')).toBeInTheDocument(); }); it('shows the icon when the connector type is selected', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx index f34c5d4e6dc7..f25d86458632 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.tsx @@ -8,6 +8,7 @@ import React, { memo, ReactNode, useCallback, useEffect, useRef, useState } from 'react'; import { EuiFlyout, EuiFlyoutBody } from '@elastic/eui'; +import { getConnectorCompatibility } from '@kbn/actions-plugin/common'; import { ActionConnector, ActionType, @@ -156,7 +157,7 @@ const CreateConnectorFlyoutComponent: React.FC = ({ icon={actionTypeModel?.iconClass} actionTypeName={actionType?.name} actionTypeMessage={actionTypeModel?.selectMessage} - featureIds={actionType?.supportedFeatureIds} + compatibility={getConnectorCompatibility(actionType?.supportedFeatureIds)} isExperimental={actionTypeModel?.isExperimental} /> { - let wrapper: ReactWrapper; +describe('actions_connectors_list', () => { + describe('component empty', () => { + let wrapper: ReactWrapper; - async function setup() { - loadAllActions.mockResolvedValueOnce([]); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: 'Test', - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: 'Test2', - supportedFeatureIds: ['alerting'], - }, - ]); - actionTypeRegistry.has.mockReturnValue(true); - - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }; - wrapper = mountWithIntl(); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); + async function setup() { + loadAllActions.mockResolvedValueOnce([]); + loadActionTypes.mockResolvedValueOnce([ + { + id: 'test', + name: 'Test', + supportedFeatureIds: ['alerting'], + }, + { + id: 'test2', + name: 'Test2', + supportedFeatureIds: ['alerting'], + }, + ]); + actionTypeRegistry.has.mockReturnValue(true); + + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + delete: true, + save: true, + show: true, + }, + }; + wrapper = mountWithIntl(); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + } + + it('renders empty prompt', async () => { + await setup(); + expect( + wrapper.find('[data-test-subj="createFirstConnectorEmptyPrompt"]').find('EuiEmptyPrompt') + ).toHaveLength(1); + expect( + wrapper.find('[data-test-subj="createFirstActionButton"]').find('EuiButton') + ).toHaveLength(1); }); - } - - it('renders empty prompt', async () => { - await setup(); - expect( - wrapper.find('[data-test-subj="createFirstConnectorEmptyPrompt"]').find('EuiEmptyPrompt') - ).toHaveLength(1); - expect( - wrapper.find('[data-test-subj="createFirstActionButton"]').find('EuiButton') - ).toHaveLength(1); - }); - test('if click create button should render CreateConnectorFlyout', async () => { - await setup(); - wrapper.find('[data-test-subj="createFirstActionButton"]').first().simulate('click'); - expect(wrapper.find('[data-test-subj="create-connector-flyout"]').exists()).toBeTruthy(); + test('if click create button should render CreateConnectorFlyout', async () => { + await setup(); + wrapper.find('[data-test-subj="createFirstActionButton"]').first().simulate('click'); + expect(wrapper.find('[data-test-subj="create-connector-flyout"]').exists()).toBeTruthy(); + }); }); -}); - -describe('actions_connectors_list component with items', () => { - let wrapper: ReactWrapper; - async function setup(actionConnectors?: ActionConnector[]) { - loadAllActions.mockResolvedValueOnce( - actionConnectors ?? [ + describe('component with items', () => { + let wrapper: ReactWrapper; + + async function setup(actionConnectors?: ActionConnector[]) { + loadAllActions.mockResolvedValueOnce( + actionConnectors ?? [ + { + id: '1', + actionTypeId: 'test', + description: 'My test', + isPreconfigured: false, + isDeprecated: false, + referencedByCount: 1, + config: {}, + }, + { + id: '2', + actionTypeId: 'test2', + description: 'My test 2', + referencedByCount: 1, + isPreconfigured: false, + isDeprecated: false, + config: {}, + }, + { + id: '3', + actionTypeId: 'test2', + description: 'My preconfigured test 2', + isMissingSecrets: true, + referencedByCount: 1, + isPreconfigured: true, + isDeprecated: false, + config: {}, + }, + { + id: '4', + actionTypeId: 'nonexistent', + description: 'My invalid connector type', + referencedByCount: 1, + isPreconfigured: false, + isDeprecated: false, + config: {}, + }, + { + id: '5', + actionTypeId: 'test3', + description: 'action with all feature ids', + referencedByCount: 1, + isPreconfigured: false, + isDeprecated: false, + config: {}, + }, + { + id: '6', + actionTypeId: 'test4', + description: 'only cases', + referencedByCount: 1, + isPreconfigured: false, + isDeprecated: false, + config: {}, + }, + ] + ); + loadActionTypes.mockResolvedValueOnce([ { - id: '1', - actionTypeId: 'test', - description: 'My test', - isPreconfigured: false, - isDeprecated: false, - referencedByCount: 1, - config: {}, + id: 'test', + name: 'Test', + enabled: true, + supportedFeatureIds: ['alerting'], }, { - id: '2', - actionTypeId: 'test2', - description: 'My test 2', - referencedByCount: 1, - isPreconfigured: false, - isDeprecated: false, - config: {}, + id: 'test2', + name: 'Test2', + enabled: true, + supportedFeatureIds: ['alerting', 'cases'], }, { - id: '3', - actionTypeId: 'test2', - description: 'My preconfigured test 2', - isMissingSecrets: true, - referencedByCount: 1, - isPreconfigured: true, - isDeprecated: false, - config: {}, + id: 'test3', + name: 'Test3', + enabled: true, + supportedFeatureIds: ['alerting', 'cases', 'siem', 'uptime'], }, { - id: '4', - actionTypeId: 'nonexistent', - description: 'My invalid connector type', - referencedByCount: 1, - isPreconfigured: false, - isDeprecated: false, - config: {}, + id: 'test4', + name: 'Test4', + enabled: true, + supportedFeatureIds: ['cases'], }, - ] - ); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: 'Test', - enabled: true, - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: 'Test2', - enabled: true, - supportedFeatureIds: ['alerting', 'cases'], - }, - ]); - - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - const mockedActionParamsFields = React.lazy(async () => ({ - default() { - return <>; - }, - })); - - actionTypeRegistry.get.mockReturnValue({ - id: 'test', - iconClass: 'test', - selectMessage: 'test', - validateParams: (): Promise> => { - const validationResult = { errors: {} }; - return Promise.resolve(validationResult); - }, - actionConnectorFields: null, - actionParamsFields: mockedActionParamsFields, - }); - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }; - wrapper = mountWithIntl(); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); - }); - - expect(loadAllActions).toHaveBeenCalled(); - } + ]); - it('renders table of connectors', async () => { - await setup(); - expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); - expect(wrapper.find('EuiTableRow')).toHaveLength(4); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); - const featureIdsBadges = wrapper.find( - 'EuiBadge[data-test-subj="connectorsTableCell-featureIds"]' - ); - expect(featureIdsBadges).toHaveLength(5); + const mockedActionParamsFields = React.lazy(async () => ({ + default() { + return <>; + }, + })); - expect(uniq(featureIdsBadges.map((badge) => badge.text()))).toEqual(['Alerting', 'Cases']); - }); + actionTypeRegistry.get.mockReturnValue({ + id: 'test', + iconClass: 'test', + selectMessage: 'test', + validateParams: (): Promise> => { + const validationResult = { errors: {} }; + return Promise.resolve(validationResult); + }, + actionConnectorFields: null, + actionParamsFields: mockedActionParamsFields, + }); + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + delete: true, + save: true, + show: true, + }, + }; + wrapper = mountWithIntl(); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(loadAllActions).toHaveBeenCalled(); + } + + it('renders table of connectors', async () => { + await setup(); + expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); + expect(wrapper.find('EuiTableRow')).toHaveLength(6); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(0) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe('Alerting Rules'); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(1) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe('Alerting RulesCases'); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(2) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe('Alerting RulesCases'); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(3) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe(''); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(4) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe('Alerting RulesCases'); + + expect( + wrapper + .find('tr[data-test-subj="connectors-row"]') + .at(5) + .find('div[data-test-subj="compatibility-content"]') + .text() + ).toBe('Cases'); + }); - it('renders table with preconfigured connectors', async () => { - await setup(); - expect(wrapper.find('[data-test-subj="preConfiguredTitleMessage"]')).toHaveLength(2); - }); + it('renders table with preconfigured connectors', async () => { + await setup(); + expect(wrapper.find('[data-test-subj="preConfiguredTitleMessage"]')).toHaveLength(2); + }); - it('renders unknown connector type as disabled', async () => { - await setup(); - expect(wrapper.find('button[data-test-subj="edit4"]').getDOMNode()).toBeDisabled(); - expect( - wrapper.find('button[data-test-subj="deleteConnector"]').last().getDOMNode() - ).not.toBeDisabled(); - expect( - wrapper.find('button[data-test-subj="runConnector"]').last().getDOMNode() - ).toBeDisabled(); - }); + it('renders unknown connector type as disabled', async () => { + await setup(); + expect(wrapper.find('button[data-test-subj="edit4"]').getDOMNode()).toBeDisabled(); + expect( + wrapper.find('button[data-test-subj="deleteConnector"]').last().getDOMNode() + ).not.toBeDisabled(); + expect( + wrapper.find('button[data-test-subj="runConnector"]').last().getDOMNode() + ).toBeDisabled(); + }); - it('renders fix button when connector secrets is missing', async () => { - await setup(); - expect( - wrapper.find('button[data-test-subj="deleteConnector"]').last().getDOMNode() - ).not.toBeDisabled(); - expect( - wrapper.find('button[data-test-subj="fixConnectorButton"]').last().getDOMNode() - ).not.toBeDisabled(); - }); + it('renders fix button when connector secrets is missing', async () => { + await setup(); + expect( + wrapper.find('button[data-test-subj="deleteConnector"]').last().getDOMNode() + ).not.toBeDisabled(); + expect( + wrapper.find('button[data-test-subj="fixConnectorButton"]').last().getDOMNode() + ).not.toBeDisabled(); + }); - it('supports pagination', async () => { - await setup( - times(15, (index) => ({ - id: `connector${index}`, - actionTypeId: 'test', - name: `My test ${index}`, - secrets: {}, - description: `My test ${index}`, - isPreconfigured: false, - isDeprecated: false, - referencedByCount: 1, - config: {}, - })) - ); - expect(wrapper.find('[data-test-subj="actionsTable"]').first().prop('pagination')) - .toMatchInlineSnapshot(` + it('supports pagination', async () => { + await setup( + times(15, (index) => ({ + id: `connector${index}`, + actionTypeId: 'test', + name: `My test ${index}`, + secrets: {}, + description: `My test ${index}`, + isPreconfigured: false, + isDeprecated: false, + referencedByCount: 1, + config: {}, + })) + ); + expect(wrapper.find('[data-test-subj="actionsTable"]').first().prop('pagination')) + .toMatchInlineSnapshot(` Object { "initialPageIndex": 0, "pageIndex": 0, } `); - wrapper.find('[data-test-subj="pagination-button-1"]').first().simulate('click'); - expect(wrapper.find('[data-test-subj="actionsTable"]').first().prop('pagination')) - .toMatchInlineSnapshot(` + wrapper.find('[data-test-subj="pagination-button-1"]').first().simulate('click'); + expect(wrapper.find('[data-test-subj="actionsTable"]').first().prop('pagination')) + .toMatchInlineSnapshot(` Object { "initialPageIndex": 0, "pageIndex": 1, } `); - }); + }); - test('if select item for edit should render EditConnectorFlyout', async () => { - await setup(); - await wrapper.find('[data-test-subj="edit1"]').first().find('button').simulate('click'); - expect(wrapper.find('[data-test-subj="edit-connector-flyout"]').exists()).toBeTruthy(); - }); + test('if select item for edit should render EditConnectorFlyout', async () => { + await setup(); + await wrapper.find('[data-test-subj="edit1"]').first().find('button').simulate('click'); + expect(wrapper.find('[data-test-subj="edit-connector-flyout"]').exists()).toBeTruthy(); + }); - test('if delete item that is used in a rule should show a warning in the popup', async () => { - await setup(); - await wrapper.find('.euiButtonIcon').last().simulate('click'); - expect(wrapper.find('[data-test-subj="deleteConnectorsConfirmation"]').exists()).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="deleteConnectorsConfirmation"]') - .text() - .includes('This connector is used in a rule') - ); + test('if delete item that is used in a rule should show a warning in the popup', async () => { + await setup(); + await wrapper.find('.euiButtonIcon').last().simulate('click'); + expect(wrapper.find('[data-test-subj="deleteConnectorsConfirmation"]').exists()).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="deleteConnectorsConfirmation"]') + .text() + .includes('This connector is used in a rule') + ); + }); }); -}); -describe('actions_connectors_list component empty with show only capability', () => { - let wrapper: ReactWrapper; + describe('component empty with show only capability', () => { + let wrapper: ReactWrapper; - async function setup() { - loadAllActions.mockResolvedValueOnce([]); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: 'Test', - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: 'Test2', - supportedFeatureIds: ['alerting'], - }, - ]); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - show: true, - save: false, - delete: false, - }, - }; - wrapper = mountWithIntl(); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); + async function setup() { + loadAllActions.mockResolvedValueOnce([]); + loadActionTypes.mockResolvedValueOnce([ + { + id: 'test', + name: 'Test', + supportedFeatureIds: ['alerting'], + }, + { + id: 'test2', + name: 'Test2', + supportedFeatureIds: ['alerting'], + }, + ]); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + show: true, + save: false, + delete: false, + }, + }; + wrapper = mountWithIntl(); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + } + + it('renders no permissions to create connector', async () => { + await setup(); + expect(wrapper.find('[defaultMessage="No permissions to create connectors"]')).toHaveLength( + 1 + ); + expect(wrapper.find('[data-test-subj="createActionButton"]')).toHaveLength(0); }); - } - - it('renders no permissions to create connector', async () => { - await setup(); - expect(wrapper.find('[defaultMessage="No permissions to create connectors"]')).toHaveLength(1); - expect(wrapper.find('[data-test-subj="createActionButton"]')).toHaveLength(0); }); -}); -describe('actions_connectors_list with show only capability', () => { - let wrapper: ReactWrapper; - - async function setup() { - loadAllActions.mockResolvedValueOnce([ - { - id: '1', - actionTypeId: 'test', - description: 'My test', - referencedByCount: 1, - config: {}, - }, - { - id: '2', - actionTypeId: 'test2', - description: 'My test 2', - referencedByCount: 1, - config: {}, - }, - ]); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: 'Test', - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: 'Test2', - supportedFeatureIds: ['alerting'], - }, - ]); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - show: true, - save: false, - delete: false, - }, - }; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - wrapper = mountWithIntl(); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); - }); - } - - it('renders table of connectors with delete button disabled', async () => { - await setup(); - expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); - expect(wrapper.find('EuiTableRow')).toHaveLength(2); - wrapper.find('EuiTableRow').forEach((elem) => { - const deleteButton = elem.find('[data-test-subj="deleteConnector"]').first(); - expect(deleteButton).toBeTruthy(); - expect(deleteButton.prop('isDisabled')).toBeTruthy(); + describe('with show only capability', () => { + let wrapper: ReactWrapper; + + async function setup() { + loadAllActions.mockResolvedValueOnce([ + { + id: '1', + actionTypeId: 'test', + description: 'My test', + referencedByCount: 1, + config: {}, + }, + { + id: '2', + actionTypeId: 'test2', + description: 'My test 2', + referencedByCount: 1, + config: {}, + }, + ]); + loadActionTypes.mockResolvedValueOnce([ + { + id: 'test', + name: 'Test', + supportedFeatureIds: ['alerting'], + }, + { + id: 'test2', + name: 'Test2', + supportedFeatureIds: ['alerting'], + }, + ]); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + show: true, + save: false, + delete: false, + }, + }; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + wrapper = mountWithIntl(); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + } + + it('renders table of connectors with delete button disabled', async () => { + await setup(); + expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); + expect(wrapper.find('EuiTableRow')).toHaveLength(2); + wrapper.find('EuiTableRow').forEach((elem) => { + const deleteButton = elem.find('[data-test-subj="deleteConnector"]').first(); + expect(deleteButton).toBeTruthy(); + expect(deleteButton.prop('isDisabled')).toBeTruthy(); + }); }); }); -}); -describe('actions_connectors_list component with disabled items', () => { - let wrapper: ReactWrapper; - - async function setup() { - loadAllActions.mockResolvedValueOnce([ - { - id: '1', - actionTypeId: 'test', - description: 'My test', - referencedByCount: 1, - config: {}, - }, - { - id: '2', - actionTypeId: 'test2', - description: 'My test 2', - referencedByCount: 1, - config: {}, - }, - ]); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: 'Test', - enabled: false, - enabledInConfig: false, - enabledInLicense: true, - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: 'Test2', - enabled: false, - enabledInConfig: true, - enabledInLicense: false, - supportedFeatureIds: ['alerting'], - }, - ]); - - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - show: true, - save: true, - delete: true, - }, - }; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - wrapper = mountWithIntl(); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); - }); + describe('component with disabled items', () => { + let wrapper: ReactWrapper; - expect(loadAllActions).toHaveBeenCalled(); - } - - it('renders table of connectors', async () => { - await setup(); - expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); - expect(wrapper.find('EuiTableRow')).toHaveLength(2); - expect(wrapper.find('EuiTableRow').at(0).prop('className')).toEqual( - 'actConnectorsList__tableRowDisabled' - ); - expect(wrapper.find('EuiTableRow').at(1).prop('className')).toEqual( - 'actConnectorsList__tableRowDisabled' - ); - }); -}); + async function setup() { + loadAllActions.mockResolvedValueOnce([ + { + id: '1', + actionTypeId: 'test', + description: 'My test', + referencedByCount: 1, + config: {}, + }, + { + id: '2', + actionTypeId: 'test2', + description: 'My test 2', + referencedByCount: 1, + config: {}, + }, + ]); + loadActionTypes.mockResolvedValueOnce([ + { + id: 'test', + name: 'Test', + enabled: false, + enabledInConfig: false, + enabledInLicense: true, + supportedFeatureIds: ['alerting'], + }, + { + id: 'test2', + name: 'Test2', + enabled: false, + enabledInConfig: true, + enabledInLicense: false, + supportedFeatureIds: ['alerting'], + }, + ]); -describe('actions_connectors_list component with deprecated connectors', () => { - let wrapper: ReactWrapper; - - async function setup() { - loadAllActions.mockResolvedValueOnce([ - { - id: '1', - actionTypeId: '.servicenow', - description: 'My test', - referencedByCount: 1, - config: { usesTableApi: true }, - isDeprecated: true, - }, - { - id: '2', - actionTypeId: '.servicenow-sir', - description: 'My test 2', - referencedByCount: 1, - config: { usesTableApi: true }, - isDeprecated: true, - }, - ]); - loadActionTypes.mockResolvedValueOnce([ - { - id: 'test', - name: '.servicenow', - enabled: false, - enabledInConfig: false, - enabledInLicense: true, - supportedFeatureIds: ['alerting'], - }, - { - id: 'test2', - name: '.servicenow-sir', - enabled: false, - enabledInConfig: true, - enabledInLicense: false, - supportedFeatureIds: ['alerting'], - }, - ]); - - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.application.capabilities = { - ...capabilities, - actions: { - show: true, - save: true, - delete: true, - }, - }; - // eslint-disable-next-line react-hooks/rules-of-hooks - useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; - wrapper = mountWithIntl( - ({ eui: { euiSizeS: '15px' }, darkMode: true })}> - - - ); - - // Wait for active space to resolve before requesting the component to update - await act(async () => { - await nextTick(); - wrapper.update(); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + show: true, + save: true, + delete: true, + }, + }; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + wrapper = mountWithIntl(); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(loadAllActions).toHaveBeenCalled(); + } + + it('renders table of connectors', async () => { + await setup(); + expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); + expect(wrapper.find('EuiTableRow')).toHaveLength(2); + expect(wrapper.find('EuiTableRow').at(0).prop('className')).toEqual( + 'actConnectorsList__tableRowDisabled' + ); + expect(wrapper.find('EuiTableRow').at(1).prop('className')).toEqual( + 'actConnectorsList__tableRowDisabled' + ); }); + }); + + describe('component with deprecated connectors', () => { + let wrapper: ReactWrapper; - expect(loadAllActions).toHaveBeenCalled(); - } + async function setup() { + loadAllActions.mockResolvedValueOnce([ + { + id: '1', + actionTypeId: '.servicenow', + description: 'My test', + referencedByCount: 1, + config: { usesTableApi: true }, + isDeprecated: true, + }, + { + id: '2', + actionTypeId: '.servicenow-sir', + description: 'My test 2', + referencedByCount: 1, + config: { usesTableApi: true }, + isDeprecated: true, + }, + ]); + loadActionTypes.mockResolvedValueOnce([ + { + id: 'test', + name: '.servicenow', + enabled: false, + enabledInConfig: false, + enabledInLicense: true, + supportedFeatureIds: ['alerting'], + }, + { + id: 'test2', + name: '.servicenow-sir', + enabled: false, + enabledInConfig: true, + enabledInLicense: false, + supportedFeatureIds: ['alerting'], + }, + ]); - it('shows the warning icon', async () => { - await setup(); - expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); - expect(wrapper.find('EuiTableRow')).toHaveLength(2); - expect(wrapper.find('.euiToolTipAnchor [aria-label="Warning"]').exists()).toBe(true); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.application.capabilities = { + ...capabilities, + actions: { + show: true, + save: true, + delete: true, + }, + }; + // eslint-disable-next-line react-hooks/rules-of-hooks + useKibanaMock().services.actionTypeRegistry = actionTypeRegistry; + wrapper = mountWithIntl( + ({ eui: { euiSizeS: '15px' }, darkMode: true })}> + + + ); + + // Wait for active space to resolve before requesting the component to update + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(loadAllActions).toHaveBeenCalled(); + } + + it('shows the warning icon', async () => { + await setup(); + expect(wrapper.find('EuiInMemoryTable')).toHaveLength(1); + expect(wrapper.find('EuiTableRow')).toHaveLength(2); + expect(wrapper.find('.euiToolTipAnchor [aria-label="Warning"]').exists()).toBe(true); + }); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/actions_connectors_list/components/actions_connectors_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/actions_connectors_list/components/actions_connectors_list.tsx index 5c58ac5dcff5..249f9f503fcf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/actions_connectors_list/components/actions_connectors_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/actions_connectors_list/components/actions_connectors_list.tsx @@ -27,7 +27,7 @@ import { i18n } from '@kbn/i18n'; import { omit } from 'lodash'; import { FormattedMessage } from '@kbn/i18n-react'; import { withTheme, EuiTheme } from '@kbn/kibana-react-plugin/common'; -import { getConnectorFeatureName } from '@kbn/actions-plugin/common'; +import { getConnectorCompatibility } from '@kbn/actions-plugin/common'; import { loadAllActions, loadActionTypes, deleteActions } from '../../../lib/action_connector_api'; import { hasDeleteActionsCapability, @@ -138,8 +138,8 @@ const ActionsConnectorsList: React.FunctionComponent = () => { actionType: actionTypesIndex[action.actionTypeId] ? actionTypesIndex[action.actionTypeId].name : action.actionTypeId, - featureIds: actionTypesIndex[action.actionTypeId] - ? actionTypesIndex[action.actionTypeId].supportedFeatureIds + compatibility: actionTypesIndex[action.actionTypeId] + ? getConnectorCompatibility(actionTypesIndex[action.actionTypeId].supportedFeatureIds) : [], }; }) @@ -272,22 +272,28 @@ const ActionsConnectorsList: React.FunctionComponent = () => { truncateText: true, }, { - field: 'featureIds', + field: 'compatibility', + 'data-test-subj': 'connectorsTableCell-compatibility', name: i18n.translate( - 'xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.featureIdsTitle', + 'xpack.triggersActionsUI.sections.actionsConnectorsList.connectorsListTable.columns.compatibility', { - defaultMessage: 'Availability', + defaultMessage: 'Compatibility', } ), sortable: false, truncateText: true, - render: (availability: string[]) => { + render: (compatibility: string[]) => { return ( - - {(availability ?? []).map((featureId: string) => ( - - - {getConnectorFeatureName(featureId)} + + {compatibility.map((compatibilityItem: string) => ( + + + {compatibilityItem} ))} diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index b6011b92de87..ac2a80212825 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -246,7 +246,7 @@ export type ActionConnectorWithoutId< export type ActionConnectorTableItem = ActionConnector & { actionType: ActionType['name']; - featureIds: ActionType['supportedFeatureIds']; + compatibility: string[]; }; type AsActionVariables = { From a1e0b989ae318910869f0cf06a126f40d6c84039 Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Fri, 26 Aug 2022 14:19:21 +0100 Subject: [PATCH 31/50] Remove sourcemap:write field from api keys creation (#139383) * Remove sourcemap:write field from api keys creation * Fix types --- x-pack/plugins/apm/common/privilege_type.ts | 2 -- .../settings/agent_keys/create_agent_key.tsx | 28 +------------------ .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../common/authentication.ts | 2 +- .../settings/agent_keys/agent_keys.spec.ts | 6 +--- 7 files changed, 3 insertions(+), 38 deletions(-) diff --git a/x-pack/plugins/apm/common/privilege_type.ts b/x-pack/plugins/apm/common/privilege_type.ts index e5a67d2a807f..161225da6848 100644 --- a/x-pack/plugins/apm/common/privilege_type.ts +++ b/x-pack/plugins/apm/common/privilege_type.ts @@ -8,14 +8,12 @@ import * as t from 'io-ts'; export const enum PrivilegeType { - SOURCEMAP = 'sourcemap:write', EVENT = 'event:write', AGENT_CONFIG = 'config_agent:read', } export const privilegesTypeRt = t.array( t.union([ - t.literal(PrivilegeType.SOURCEMAP), t.literal(PrivilegeType.EVENT), t.literal(PrivilegeType.AGENT_CONFIG), ]) diff --git a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx index 1634706d330e..684a7386f35e 100644 --- a/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/agent_keys/create_agent_key.tsx @@ -43,12 +43,11 @@ export function CreateAgentKeyFlyout({ onCancel, onSuccess, onError }: Props) { const [agentKeyBody, setAgentKeyBody] = useState({ name: '', - sourcemap: true, event: true, agentConfig: true, }); - const { name, sourcemap, event, agentConfig } = agentKeyBody; + const { name, event, agentConfig } = agentKeyBody; const currentUser = useCurrentUser(); @@ -73,10 +72,6 @@ export function CreateAgentKeyFlyout({ onCancel, onSuccess, onError }: Props) { try { const privileges: PrivilegeType[] = []; - if (sourcemap) { - privileges.push(PrivilegeType.SOURCEMAP); - } - if (event) { privileges.push(PrivilegeType.EVENT); } @@ -206,27 +201,6 @@ export function CreateAgentKeyFlyout({ onCancel, onSuccess, onError }: Props) { /> - - - setAgentKeyBody((state) => ({ - ...state, - sourcemap: !state.sourcemap, - })) - } - /> - - diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 655833491343..a1db17454109 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -7374,7 +7374,6 @@ "xpack.apm.settings.agentKeys.createKeyFlyout.namePlaceholder": "Par exemple, apm-key", "xpack.apm.settings.agentKeys.createKeyFlyout.nameTitle": "Nom", "xpack.apm.settings.agentKeys.createKeyFlyout.privilegesFieldset": "Attribuer des privilèges", - "xpack.apm.settings.agentKeys.createKeyFlyout.sourcemaps": "Requis pour le téléchargement des cartes sources.", "xpack.apm.settings.agentKeys.createKeyFlyout.userTitle": "Utilisateur", "xpack.apm.settings.agentKeys.deleteConfirmModal.cancel": "Annuler", "xpack.apm.settings.agentKeys.deleteConfirmModal.delete": "Supprimer", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5a6e17d82c29..9ec2c5ba026d 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7363,7 +7363,6 @@ "xpack.apm.settings.agentKeys.createKeyFlyout.namePlaceholder": "例:apm-key", "xpack.apm.settings.agentKeys.createKeyFlyout.nameTitle": "名前", "xpack.apm.settings.agentKeys.createKeyFlyout.privilegesFieldset": "権限を割り当て", - "xpack.apm.settings.agentKeys.createKeyFlyout.sourcemaps": "ソースマップのアップロードに必要です。", "xpack.apm.settings.agentKeys.createKeyFlyout.userTitle": "ユーザー", "xpack.apm.settings.agentKeys.deleteConfirmModal.cancel": "キャンセル", "xpack.apm.settings.agentKeys.deleteConfirmModal.delete": "削除", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 107dcec2ce65..915e40765e5a 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7377,7 +7377,6 @@ "xpack.apm.settings.agentKeys.createKeyFlyout.namePlaceholder": "例如,apm-key", "xpack.apm.settings.agentKeys.createKeyFlyout.nameTitle": "名称", "xpack.apm.settings.agentKeys.createKeyFlyout.privilegesFieldset": "分配权限", - "xpack.apm.settings.agentKeys.createKeyFlyout.sourcemaps": "上传源地图所必需。", "xpack.apm.settings.agentKeys.createKeyFlyout.userTitle": "用户", "xpack.apm.settings.agentKeys.deleteConfirmModal.cancel": "取消", "xpack.apm.settings.agentKeys.deleteConfirmModal.delete": "删除", diff --git a/x-pack/test/apm_api_integration/common/authentication.ts b/x-pack/test/apm_api_integration/common/authentication.ts index 28dffac7f80c..e975f6e14744 100644 --- a/x-pack/test/apm_api_integration/common/authentication.ts +++ b/x-pack/test/apm_api_integration/common/authentication.ts @@ -78,7 +78,7 @@ const customRoles = { applications: [ { application: 'apm', - privileges: [PrivilegeType.AGENT_CONFIG, PrivilegeType.EVENT, PrivilegeType.SOURCEMAP], + privileges: [PrivilegeType.AGENT_CONFIG, PrivilegeType.EVENT], resources: ['*'], }, ], diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts index 2f607cecb75b..c0d6500fd298 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts @@ -17,11 +17,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const esClient = getService('es'); const agentKeyName = 'test'; - const allApplicationPrivileges = [ - PrivilegeType.AGENT_CONFIG, - PrivilegeType.EVENT, - PrivilegeType.SOURCEMAP, - ]; + const allApplicationPrivileges = [PrivilegeType.AGENT_CONFIG, PrivilegeType.EVENT]; async function createAgentKey(apiClient: ApmApiSupertest, privileges = allApplicationPrivileges) { return await apiClient({ From 62578bdcf4adc9c3ed798f399193efbb2a0539cf Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Fri, 26 Aug 2022 15:25:51 +0200 Subject: [PATCH 32/50] [ML] Fix navigation for the Basic licence (#139469) * fix redirect to the data vis * update jest tests * remove window.location.href from the clone action * assert the redirect * update power user tests * use plugin id const, return promise reject --- x-pack/plugins/ml/public/application/app.tsx | 2 +- .../jobs/jobs_list/components/utils.js | 6 ++-- .../application/license/check_license.tsx | 8 +++-- .../license/ml_client_license.test.ts | 7 ++-- .../application/license/ml_client_license.ts | 35 +++++++++++-------- .../apps/ml/permissions/full_ml_access.ts | 7 +++- .../apps/ml/permissions/read_ml_access.ts | 7 +++- 7 files changed, 49 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/ml/public/application/app.tsx b/x-pack/plugins/ml/public/application/app.tsx index 53c50893bcdf..8e9a7d67d10a 100644 --- a/x-pack/plugins/ml/public/application/app.tsx +++ b/x-pack/plugins/ml/public/application/app.tsx @@ -146,7 +146,7 @@ export const renderApp = ( appMountParams.onAppLeave((actions) => actions.default()); - const mlLicense = setLicenseCache(deps.licensing, [ + const mlLicense = setLicenseCache(deps.licensing, coreStart.application, [ () => ReactDOM.render( , diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js index 364cdd1be55d..430244c52e69 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js @@ -13,7 +13,7 @@ import { getToastNotificationService, toastNotificationServiceProvider, } from '../../../services/toast_notification_service'; -import { getToastNotifications } from '../../../util/dependency_cache'; +import { getApplication, getToastNotifications } from '../../../util/dependency_cache'; import { ml } from '../../../services/ml_api_service'; import { stringMatch } from '../../../util/string_utils'; import { getDataViewNames } from '../../../util/index_utils'; @@ -22,6 +22,8 @@ import { JOB_ACTION } from '../../../../../common/constants/job_actions'; import { parseInterval } from '../../../../../common/util/parse_interval'; import { mlCalendarService } from '../../../services/calendar_service'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { ML_PAGES } from '../../../../../common/constants/locator'; +import { PLUGIN_ID } from '../../../../../common/constants/app'; export function loadFullJob(jobId) { return new Promise((resolve, reject) => { @@ -287,7 +289,7 @@ export async function cloneJob(jobId) { ); } - window.location.href = '#/jobs/new_job'; + getApplication().navigateToApp(PLUGIN_ID, { path: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB }); } catch (error) { getToastNotificationService().displayErrorToast( error, diff --git a/x-pack/plugins/ml/public/application/license/check_license.tsx b/x-pack/plugins/ml/public/application/license/check_license.tsx index 569746a1dab2..9436614effe3 100644 --- a/x-pack/plugins/ml/public/application/license/check_license.tsx +++ b/x-pack/plugins/ml/public/application/license/check_license.tsx @@ -5,7 +5,8 @@ * 2.0. */ -import { LicensingPluginSetup } from '@kbn/licensing-plugin/public'; +import type { LicensingPluginSetup } from '@kbn/licensing-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; import { MlLicense } from '../../../common/license'; import { MlClientLicense } from './ml_client_license'; @@ -16,13 +17,16 @@ let mlLicense: MlClientLicense | null = null; * * @export * @param {LicensingPluginSetup} licensingSetup + * @param application + * @param postInitFunctions * @returns {MlClientLicense} */ export function setLicenseCache( licensingSetup: LicensingPluginSetup, + application: CoreStart['application'], postInitFunctions?: Array<(lic: MlLicense) => void> ) { - mlLicense = new MlClientLicense(); + mlLicense = new MlClientLicense(application); mlLicense.setup(licensingSetup.license$, postInitFunctions); return mlLicense; } diff --git a/x-pack/plugins/ml/public/application/license/ml_client_license.test.ts b/x-pack/plugins/ml/public/application/license/ml_client_license.test.ts index 02a38f152a3e..ea7aa5d1a4b9 100644 --- a/x-pack/plugins/ml/public/application/license/ml_client_license.test.ts +++ b/x-pack/plugins/ml/public/application/license/ml_client_license.test.ts @@ -9,10 +9,13 @@ import { Observable, Subject } from 'rxjs'; import { ILicense } from '@kbn/licensing-plugin/common/types'; import { MlClientLicense } from './ml_client_license'; +import { applicationServiceMock } from '@kbn/core/public/application/application_service.mock'; describe('MlClientLicense', () => { + const startApplicationContractMock = applicationServiceMock.createStartContract(); + test('should miss the license update when initialized without postInitFunction', () => { - const mlLicense = new MlClientLicense(); + const mlLicense = new MlClientLicense(startApplicationContractMock); // upon instantiation the full license doesn't get set expect(mlLicense.isFullLicense()).toBe(false); @@ -35,7 +38,7 @@ describe('MlClientLicense', () => { }); test('should not miss the license update when initialized with postInitFunction', (done) => { - const mlLicense = new MlClientLicense(); + const mlLicense = new MlClientLicense(startApplicationContractMock); // upon instantiation the full license doesn't get set expect(mlLicense.isFullLicense()).toBe(false); diff --git a/x-pack/plugins/ml/public/application/license/ml_client_license.ts b/x-pack/plugins/ml/public/application/license/ml_client_license.ts index 055ad7b64139..37488b8448ae 100644 --- a/x-pack/plugins/ml/public/application/license/ml_client_license.ts +++ b/x-pack/plugins/ml/public/application/license/ml_client_license.ts @@ -5,19 +5,36 @@ * 2.0. */ +import type { CoreStart } from '@kbn/core/public'; +import { ML_PAGES } from '../../../common/constants/locator'; import { MlLicense } from '../../../common/license'; import { showExpiredLicenseWarning } from './expired_warning'; +import { PLUGIN_ID } from '../../../common/constants/app'; export class MlClientLicense extends MlLicense { - fullLicenseResolver() { + constructor(private application: CoreStart['application']) { + super(); + } + + private redirectToKibana() { + this.application.navigateToApp('home'); + return Promise.reject(); + } + + private redirectToBasic() { + this.application.navigateToApp(PLUGIN_ID, { path: ML_PAGES.DATA_VISUALIZER }); + return Promise.reject(); + } + + fullLicenseResolver(): Promise { if (this.isMlEnabled() === false || this.isMinimumLicense() === false) { // ML is not enabled or the license isn't at least basic - return redirectToKibana(); + return this.redirectToKibana(); } if (this.isFullLicense() === false) { // ML is enabled, but only with a basic or gold license - return redirectToBasic(); + return this.redirectToBasic(); } // ML is enabled @@ -30,7 +47,7 @@ export class MlClientLicense extends MlLicense { basicLicenseResolver() { if (this.isMlEnabled() === false || this.isMinimumLicense() === false) { // ML is not enabled or the license isn't at least basic - return redirectToKibana(); + return this.redirectToKibana(); } // ML is enabled @@ -40,13 +57,3 @@ export class MlClientLicense extends MlLicense { return Promise.resolve(); } } - -function redirectToKibana() { - window.location.href = '/'; - return Promise.reject(); -} - -function redirectToBasic() { - window.location.href = '#/datavisualizer'; - return Promise.reject(); -} diff --git a/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts b/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts index b90b97ca87a5..0ff4eca82a5c 100644 --- a/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts +++ b/x-pack/test/functional_basic/apps/ml/permissions/full_ml_access.ts @@ -5,13 +5,14 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; - import { USER } from '../../../../functional/services/ml/security_common'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); + const browser = getService('browser'); const testUsers = [ { user: USER.ML_POWERUSER, discoverAvailable: true }, @@ -57,6 +58,10 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('should load the ML app'); await ml.navigation.navigateToMl(); + await ml.testExecution.logTestStep('should redirect to the "Data Visualizer" page'); + const browserURl = await browser.getCurrentUrl(); + expect(browserURl).to.contain('/ml/datavisualizer'); + await ml.testExecution.logTestStep('should display the disabled "Overview" tab'); await ml.navigation.assertOverviewTabEnabled(false); diff --git a/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts b/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts index fc293defceb8..c7a3f13d23ed 100644 --- a/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts +++ b/x-pack/test/functional_basic/apps/ml/permissions/read_ml_access.ts @@ -5,13 +5,14 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; - import { USER } from '../../../../functional/services/ml/security_common'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); + const browser = getService('browser'); const testUsers = [ { user: USER.ML_VIEWER, discoverAvailable: true }, @@ -57,6 +58,10 @@ export default function ({ getService }: FtrProviderContext) { await ml.testExecution.logTestStep('should load the ML app'); await ml.navigation.navigateToMl(); + await ml.testExecution.logTestStep('should redirect to the "Data Visualizer" page'); + const browserURl = await browser.getCurrentUrl(); + expect(browserURl).to.contain('/ml/datavisualizer'); + await ml.testExecution.logTestStep('should display the disabled "Overview" tab'); await ml.navigation.assertOverviewTabEnabled(false); From 6e3aa86de8256829f3021213a27e0014a3891421 Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Fri, 26 Aug 2022 08:54:18 -0500 Subject: [PATCH 33/50] default document card title to title key (#139439) Updated the document list for content to try and find a better title if we can find a title key (or name) on the result _source. This was done on the shared Result component to try and make it more accessible. Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../document_list/document_list.tsx | 8 +--- .../applications/shared/result/result.tsx | 11 ++++-- .../shared/result/result_metadata.test.ts | 27 +++++++++++++ .../shared/result/result_metadata.ts | 39 +++++++++++++++++++ .../applications/shared/result/types.ts | 1 + 5 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx index 43ed12f040d0..1d34dc695b0e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx @@ -28,6 +28,7 @@ import { import { i18n } from '@kbn/i18n'; import { Result } from '../../../../../shared/result/result'; +import { resultMetaData } from '../../../../../shared/result/result_metadata'; import { DocumentsLogic } from '../../documents_logic'; @@ -84,12 +85,7 @@ export const DocumentList: React.FC = () => { {results.map((result) => { return ( - + ); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/result/result.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/result/result.tsx index f350587494eb..9b1b5c61a5b2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/result/result.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/result/result.tsx @@ -48,10 +48,13 @@ export const Result: React.FC = ({ metaData, fields }) => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.test.ts new file mode 100644 index 000000000000..c93b2b1b7a72 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.test.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; + +import { resultTitle } from './result_metadata'; + +const makeSearchHit = (source: undefined | unknown): SearchHit => + ({ + _source: source, + } as SearchHit); + +describe('resultTitle', () => { + it('returns result title if available', () => { + expect(resultTitle(makeSearchHit({ title: 'test 123' }))).toEqual('test 123'); + expect(resultTitle(makeSearchHit({ name: 'this is a name' }))).toEqual('this is a name'); + expect(resultTitle(makeSearchHit({ name: 'this is a name', title: 'test 123' }))).toEqual( + 'test 123' + ); + expect(resultTitle(makeSearchHit({ other: 'thing' }))).toEqual(undefined); + expect(resultTitle(makeSearchHit(undefined))).toEqual(undefined); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.ts b/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.ts new file mode 100644 index 000000000000..e6f114e061da --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/result/result_metadata.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; + +import { MetaDataProps } from './types'; + +const TITLE_KEYS = ['title', 'name']; + +const isRecord = (source: unknown | undefined): source is Record => { + return typeof source === 'object' && source !== null; +}; + +function hasStringKey, K extends PropertyKey>( + source: T, + key: K +): source is T & Record { + return typeof source[key] === 'string'; +} + +export const resultTitle = (result: SearchHit): string | undefined => { + if (isRecord(result._source)) { + for (const key of TITLE_KEYS) { + if (hasStringKey(result._source, key)) { + return result._source[key]; + } + } + } + return undefined; +}; + +export const resultMetaData = (result: SearchHit): MetaDataProps => ({ + id: result._id, + title: resultTitle(result), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/result/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/result/types.ts index 458f34528b5d..55112d828c17 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/result/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/result/types.ts @@ -10,6 +10,7 @@ import { IconType } from '@elastic/eui'; export interface MetaDataProps { id: string; onDocumentDelete?: Function; + title?: string; } export interface ResultFieldProps { From ea929a0eb80cd1cdfbd0f0fe8234cef1152ca1f0 Mon Sep 17 00:00:00 2001 From: Nav <13634519+navarone-feekery@users.noreply.github.com> Date: Fri, 26 Aug 2022 16:27:46 +0100 Subject: [PATCH 34/50] [Enterprise Search] Add connector crawler check (#139298) * Differentiate crawler connectors from regular connectors * Return crawler type when fetching connector-crawler index --- .../enterprise_search/common/constants.ts | 2 + .../enterprise_search/common/types/indices.ts | 10 +- .../__mocks__/search_indices.mock.ts | 37 +++++++ .../__mocks__/view_index.mock.ts | 47 +++++++- .../utils/indices.test.ts | 100 +++++++++++++++++- .../utils/indices.ts | 13 ++- .../server/lib/indices/fetch_index.test.ts | 38 ++++++- .../server/lib/indices/fetch_index.ts | 5 +- 8 files changed, 236 insertions(+), 16 deletions(-) diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts index d762fa4960a6..7fed08fc8df6 100644 --- a/x-pack/plugins/enterprise_search/common/constants.ts +++ b/x-pack/plugins/enterprise_search/common/constants.ts @@ -98,3 +98,5 @@ export const ENTERPRISE_SEARCH_ELASTICSEARCH_URL = '/app/enterprise_search/elast export const WORKPLACE_SEARCH_URL = '/app/enterprise_search/workplace_search'; export const ENTERPRISE_SEARCH_DOCUMENTS_DEFAULT_DOC_COUNT = 25; + +export const ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE = 'elastic-crawler'; diff --git a/x-pack/plugins/enterprise_search/common/types/indices.ts b/x-pack/plugins/enterprise_search/common/types/indices.ts index 08f4125ef8ef..d047ec9ba36d 100644 --- a/x-pack/plugins/enterprise_search/common/types/indices.ts +++ b/x-pack/plugins/enterprise_search/common/types/indices.ts @@ -36,13 +36,11 @@ export interface ElasticsearchIndex { export interface ConnectorIndex extends ElasticsearchIndex { connector: Connector; } - export interface CrawlerIndex extends ElasticsearchIndex { crawler: Crawler; + connector?: Connector; } -export interface ConnectorIndex extends ElasticsearchIndex { - connector: Connector; -} + export interface ElasticsearchIndexWithPrivileges extends ElasticsearchIndex { alias: boolean; privileges: { @@ -51,8 +49,4 @@ export interface ElasticsearchIndexWithPrivileges extends ElasticsearchIndex { }; } -export interface CrawlerIndex extends ElasticsearchIndex { - crawler: Crawler; -} - export type ElasticsearchIndexWithIngestion = ElasticsearchIndex | ConnectorIndex | CrawlerIndex; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts index e39ff051f962..2416113e9a56 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../../common/constants'; + import { ConnectorStatus, SyncStatus } from '../../../../common/types/connectors'; import { ElasticsearchIndexWithIngestion } from '../../../../common/types/indices'; @@ -68,4 +70,39 @@ export const indices: ElasticsearchIndexWithIngestion[] = [ store: { size_in_bytes: '8024' }, }, }, + { + connector: { + api_key_id: null, + configuration: { foo: { label: 'bar', value: 'barbar' } }, + id: '4', + index_name: 'connector-crawler', + language: 'en', + last_seen: null, + last_sync_error: null, + last_sync_status: SyncStatus.COMPLETED, + last_synced: null, + name: 'connector-crawler', + scheduling: { + enabled: false, + interval: '', + }, + service_type: ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE, + status: ConnectorStatus.CONFIGURED, + sync_now: false, + }, + count: 1, + crawler: { + id: '5', + index_name: 'crawler', + }, + hidden: false, + name: 'connector-crawler', + total: { + docs: { + count: 1, + deleted: 0, + }, + store: { size_in_bytes: '8024' }, + }, + }, ]; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts index bc226baa77f7..1e84497bac8a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../../common/constants'; + import { SyncStatus, ConnectorStatus } from '../../../../common/types/connectors'; import { @@ -83,5 +85,48 @@ export const crawlerIndex: CrawlerViewIndex = { store: { size_in_bytes: '8024' }, }, }; +export const connectorCrawlerIndex: CrawlerViewIndex = { + connector: { + api_key_id: null, + configuration: { foo: { label: 'bar', value: 'barbar' } }, + id: '4', + index_name: 'connector-crawler', + language: 'en', + last_seen: null, + last_sync_error: null, + last_sync_status: SyncStatus.COMPLETED, + last_synced: null, + name: 'connector-crawler', + scheduling: { + enabled: false, + interval: '', + }, + service_type: ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE, + status: ConnectorStatus.CONFIGURED, + sync_now: false, + }, + count: 1, + crawler: { + id: '5', + index_name: 'crawler', + }, + hidden: false, + ingestionMethod: IngestionMethod.CRAWLER, + ingestionStatus: IngestionStatus.INCOMPLETE, + lastUpdated: null, + name: 'connector-crawler', + total: { + docs: { + count: 1, + deleted: 0, + }, + store: { size_in_bytes: '8024' }, + }, +}; -export const elasticsearchViewIndices = [apiIndex, connectorIndex, crawlerIndex]; +export const elasticsearchViewIndices = [ + apiIndex, + connectorIndex, + crawlerIndex, + connectorCrawlerIndex, +]; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.test.ts index e02f67964b76..ce6e443a2502 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.test.ts @@ -5,7 +5,12 @@ * 2.0. */ -import { connectorIndex, crawlerIndex, apiIndex } from '../__mocks__/view_index.mock'; +import { + connectorIndex, + crawlerIndex, + connectorCrawlerIndex, + apiIndex, +} from '../__mocks__/view_index.mock'; import moment from 'moment'; @@ -17,6 +22,12 @@ import { getIngestionStatus, getLastUpdated, indexToViewIndex, + isConnectorIndex, + isCrawlerIndex, + isApiIndex, + isConnectorViewIndex, + isCrawlerViewIndex, + isApiViewIndex, } from './indices'; describe('Indices util functions', () => { @@ -27,6 +38,9 @@ describe('Indices util functions', () => { it('should return correct ingestion method for crawler', () => { expect(getIngestionMethod(crawlerIndex)).toEqual(IngestionMethod.CRAWLER); }); + it('should return correct ingestion method for connector-crawler', () => { + expect(getIngestionMethod(connectorCrawlerIndex)).toEqual(IngestionMethod.CRAWLER); + }); it('should return correct ingestion method for API', () => { expect(getIngestionMethod(apiIndex)).toEqual(IngestionMethod.API); }); @@ -116,4 +130,88 @@ describe('Indices util functions', () => { }); }); }); + describe('isConnectorIndex', () => { + it('should return true for connector indices', () => { + expect(isConnectorIndex(connectorIndex)).toEqual(true); + }); + it('should return false for connector-crawler indices', () => { + expect(isConnectorIndex(connectorCrawlerIndex)).toEqual(false); + }); + it('should return false for crawler indices', () => { + expect(isConnectorIndex(crawlerIndex)).toEqual(false); + }); + it('should return false for API indices', () => { + expect(isConnectorIndex(apiIndex)).toEqual(false); + }); + }); + describe('isCrawlerIndex', () => { + it('should return true for crawler indices', () => { + expect(isCrawlerIndex(crawlerIndex)).toEqual(true); + }); + it('should return true for connector-crawler indices', () => { + expect(isCrawlerIndex(connectorCrawlerIndex)).toEqual(true); + }); + it('should return false for connector and API indices', () => { + expect(isCrawlerIndex(connectorIndex)).toEqual(false); + }); + it('should return false for API indices', () => { + expect(isCrawlerIndex(apiIndex)).toEqual(false); + }); + }); + describe('isApiIndex', () => { + it('should return true for API indices', () => { + expect(isApiIndex(apiIndex)).toEqual(true); + }); + it('should return false for crawler indices', () => { + expect(isApiIndex(crawlerIndex)).toEqual(false); + }); + it('should return false for connector-crawler indices', () => { + expect(isApiIndex(connectorCrawlerIndex)).toEqual(false); + }); + it('should return false for connector and API indices', () => { + expect(isApiIndex(connectorIndex)).toEqual(false); + }); + }); + describe('isConnectorViewIndex', () => { + it('should return true for connector indices', () => { + expect(isConnectorViewIndex(connectorIndex)).toEqual(true); + }); + it('should return false for connector-crawler indices', () => { + expect(isConnectorViewIndex(connectorCrawlerIndex)).toEqual(false); + }); + it('should return false for crawler indices', () => { + expect(isConnectorViewIndex(crawlerIndex)).toEqual(false); + }); + it('should return false for API indices', () => { + expect(isConnectorViewIndex(apiIndex)).toEqual(false); + }); + }); + describe('isCrawlerViewIndex', () => { + it('should return true for crawler indices', () => { + expect(isCrawlerViewIndex(crawlerIndex)).toEqual(true); + }); + it('should return true for connector-crawler indices', () => { + expect(isCrawlerViewIndex(connectorCrawlerIndex)).toEqual(true); + }); + it('should return false for connector and API indices', () => { + expect(isCrawlerViewIndex(connectorIndex)).toEqual(false); + }); + it('should return false for API indices', () => { + expect(isCrawlerViewIndex(apiIndex)).toEqual(false); + }); + }); + describe('isApiViewIndex', () => { + it('should return true for API indices', () => { + expect(isApiViewIndex(apiIndex)).toEqual(true); + }); + it('should return false for crawler indices', () => { + expect(isApiViewIndex(crawlerIndex)).toEqual(false); + }); + it('should return false for connector-crawler indices', () => { + expect(isApiViewIndex(connectorCrawlerIndex)).toEqual(false); + }); + it('should return false for connector and API indices', () => { + expect(isApiViewIndex(connectorIndex)).toEqual(false); + }); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.ts index 30bf0fc2b5d5..9a17f7fe84f4 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/utils/indices.ts @@ -9,6 +9,7 @@ import moment from 'moment'; import { i18n } from '@kbn/i18n'; +import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../../common/constants'; import { SyncStatus, ConnectorStatus } from '../../../../common/types/connectors'; import { ConnectorIndex, @@ -28,7 +29,11 @@ import { export function isConnectorIndex( index: ElasticsearchIndexWithIngestion | undefined ): index is ConnectorIndex { - return !!(index as ConnectorIndex)?.connector; + const connectorIndex = index as ConnectorIndex; + return ( + !!connectorIndex?.connector && + connectorIndex.connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE + ); } export function isCrawlerIndex( @@ -45,7 +50,11 @@ export function isApiIndex(index: ElasticsearchIndexWithIngestion | undefined): } export function isConnectorViewIndex(index: ElasticsearchViewIndex): index is ConnectorViewIndex { - return !!(index as ConnectorViewIndex)?.connector; + const connectorViewIndex = index as ConnectorViewIndex; + return ( + !!connectorViewIndex?.connector && + connectorViewIndex.connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE + ); } export function isCrawlerViewIndex(index: ElasticsearchViewIndex): index is CrawlerViewIndex { diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.test.ts b/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.test.ts index 49384f564a98..c9b4979d79a8 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.test.ts @@ -8,6 +8,8 @@ import { ByteSizeValue } from '@kbn/config-schema'; import { IScopedClusterClient } from '@kbn/core/server'; +import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../common/constants'; + import { fetchConnectorByIndexName } from '../connectors/fetch_connectors'; import { fetchCrawlerByIndexName } from '../crawler/fetch_crawlers'; @@ -103,13 +105,16 @@ describe('fetchIndex lib function', () => { }) ); (fetchConnectorByIndexName as jest.Mock).mockImplementationOnce(() => - Promise.resolve({ doc: 'doc' }) + Promise.resolve({ + doc: 'doc', + service_type: 'some-service-type', + }) ); mockClient.asCurrentUser.indices.stats.mockImplementation(() => Promise.resolve(statsResponse)); await expect( fetchIndex(mockClient as unknown as IScopedClusterClient, 'index_name') - ).resolves.toEqual({ ...result, connector: { doc: 'doc' } }); + ).resolves.toEqual({ ...result, connector: { doc: 'doc', service_type: 'some-service-type' } }); }); it('should return data and stats for index and crawler if crawler is present', async () => { @@ -137,6 +142,35 @@ describe('fetchIndex lib function', () => { }, }); }); + + it('should return data and stats for index and crawler if a crawler registered as a connector is present', async () => { + mockClient.asCurrentUser.indices.get.mockImplementation(() => + Promise.resolve({ + index_name: { aliases: [], data: 'full index' }, + }) + ); + (fetchCrawlerByIndexName as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + id: '1234', + }) + ); + (fetchConnectorByIndexName as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + doc: 'doc', + service_type: ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE, + }) + ); + mockClient.asCurrentUser.indices.stats.mockImplementation(() => Promise.resolve(statsResponse)); + + await expect( + fetchIndex(mockClient as unknown as IScopedClusterClient, 'index_name') + ).resolves.toEqual({ + ...result, + connector: { doc: 'doc', service_type: ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE }, + crawler: { id: '1234' }, + }); + }); + it('should throw a 404 error if the index cannot be fonud', async () => { mockClient.asCurrentUser.indices.get.mockImplementation(() => Promise.resolve({})); (fetchConnectorByIndexName as jest.Mock).mockImplementationOnce(() => diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.ts b/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.ts index 1505d4501ac1..2414e19de118 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/fetch_index.ts @@ -7,6 +7,7 @@ import { IScopedClusterClient } from '@kbn/core/server'; +import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../common/constants'; import { ElasticsearchIndexWithIngestion } from '../../../common/types/indices'; import { fetchConnectorByIndexName } from '../connectors/fetch_connectors'; import { fetchCrawlerByIndexName } from '../crawler/fetch_crawlers'; @@ -33,7 +34,7 @@ export const fetchIndex = async ( }; const connector = await fetchConnectorByIndexName(client, index); - if (connector) { + if (connector && connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE) { return { ...indexResult, connector, @@ -42,7 +43,7 @@ export const fetchIndex = async ( const crawler = await fetchCrawlerByIndexName(client, index); if (crawler) { - return { ...indexResult, crawler }; + return { ...indexResult, connector, crawler }; } return indexResult; From 0b8e2700fd6b26584ba1fd466c65b3ed39c3af00 Mon Sep 17 00:00:00 2001 From: Candace Park <56409205+parkiino@users.noreply.github.com> Date: Fri, 26 Aug 2022 11:55:13 -0400 Subject: [PATCH 35/50] [Security Solution][Responder] Improved UI for responder capabilities check (#138662) --- .../common/endpoint/constants.ts | 17 ++- .../use_does_endpoint_support_responder.ts | 17 --- .../responder_context_menu_item.tsx | 11 +- .../console/components/bad_argument.tsx | 42 +++---- .../console/components/command_list.tsx | 18 ++- .../handle_execute_command.test.tsx | 4 +- .../handle_execute_command.tsx | 3 +- .../console/components/validation_error.tsx | 65 +++++++++++ .../management/components/console/types.ts | 8 +- ...point_response_actions_console_commands.ts | 106 +++++++++++++++--- .../get_command_about_info.tsx | 39 +++++++ .../get_processes_action.test.tsx | 22 +++- .../isolate_action.test.tsx | 22 +++- .../kill_process_action.test.tsx | 22 +++- .../release_action.test.tsx | 22 +++- .../suspend_process_action.test.tsx | 22 +++- .../use_with_show_endpoint_responder.tsx | 5 +- .../view/hooks/use_endpoint_action_items.tsx | 8 -- .../pages/endpoint_hosts/view/index.test.tsx | 13 --- .../pages/endpoint_hosts/view/index.tsx | 2 +- 20 files changed, 353 insertions(+), 115 deletions(-) delete mode 100644 x-pack/plugins/security_solution/public/common/hooks/endpoint/use_does_endpoint_support_responder.ts create mode 100644 x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx create mode 100644 x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_command_about_info.tsx diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/plugins/security_solution/common/endpoint/constants.ts index 4b5adbbb8e21..8f0bd47c204c 100644 --- a/x-pack/plugins/security_solution/common/endpoint/constants.ts +++ b/x-pack/plugins/security_solution/common/endpoint/constants.ts @@ -75,11 +75,24 @@ export const ENDPOINT_DEFAULT_PAGE = 0; export const ENDPOINT_DEFAULT_PAGE_SIZE = 10; /** - * The list of capabilities, reported by the endpoint in the metadata document, that are - * needed in order for the Responder UI to be accessible + * The list of possible capabilities, reported by the endpoint in the metadata document */ export const RESPONDER_CAPABILITIES = [ + 'isolation', 'kill_process', 'suspend_process', 'running_processes', ] as const; + +export type ResponderCapabilities = typeof RESPONDER_CAPABILITIES[number]; + +/** The list of possible responder command names **/ +export const RESPONDER_COMMANDS = [ + 'isolate', + 'release', + 'kill-process', + 'suspend-process', + 'processes', +] as const; + +export type ResponderCommands = typeof RESPONDER_COMMANDS[number]; diff --git a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_does_endpoint_support_responder.ts b/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_does_endpoint_support_responder.ts deleted file mode 100644 index c7c2979186f2..000000000000 --- a/x-pack/plugins/security_solution/public/common/hooks/endpoint/use_does_endpoint_support_responder.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; -import type { HostMetadata, MaybeImmutable } from '../../../../common/endpoint/types'; - -export const useDoesEndpointSupportResponder = ( - endpointMetadata: MaybeImmutable | undefined -): boolean => { - return RESPONDER_CAPABILITIES.every((capability) => - endpointMetadata?.Endpoint.capabilities?.includes(capability) - ); -}; diff --git a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx index ccab3a650b60..4f536f9372e2 100644 --- a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx @@ -12,8 +12,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { useGetEndpointDetails, useWithShowEndpointResponder } from '../../../management/hooks'; import { HostStatus } from '../../../../common/endpoint/types'; -import { useDoesEndpointSupportResponder } from '../../../common/hooks/endpoint/use_does_endpoint_support_responder'; -import { UPGRADE_ENDPOINT_FOR_RESPONDER } from '../../../common/translations'; export const NOT_FROM_ENDPOINT_HOST_TOOLTIP = i18n.translate( 'xpack.securitySolution.endpoint.detections.takeAction.responseActionConsole.notSupportedTooltip', @@ -49,18 +47,11 @@ export const ResponderContextMenuItem = memo( error, } = useGetEndpointDetails(endpointId, { enabled: Boolean(endpointId) }); - const isResponderCapabilitiesEnabled = useDoesEndpointSupportResponder( - endpointHostInfo?.metadata - ); const [isDisabled, tooltip]: [disabled: boolean, tooltip: ReactNode] = useMemo(() => { if (!endpointId) { return [true, NOT_FROM_ENDPOINT_HOST_TOOLTIP]; } - if (endpointHostInfo && !isResponderCapabilitiesEnabled) { - return [true, UPGRADE_ENDPOINT_FOR_RESPONDER]; - } - // Still loading Endpoint host info if (isFetching) { return [true, LOADING_ENDPOINT_DATA_TOOLTIP]; @@ -82,7 +73,7 @@ export const ResponderContextMenuItem = memo( } return [false, undefined]; - }, [endpointHostInfo, endpointId, error, isFetching, isResponderCapabilitiesEnabled]); + }, [endpointHostInfo, endpointId, error, isFetching]); const handleResponseActionsClick = useCallback(() => { if (endpointHostInfo) showEndpointResponseActionsConsole(endpointHostInfo.metadata); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx index b6085ed5356c..32d66bada9a9 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/bad_argument.tsx @@ -40,30 +40,24 @@ export const BadArgument = memo - <> -
{store.errorMessage}
- -
- -
-
- - - {`${command.commandDefinition.name} --help`} - ), - }} - /> - -
- +
{store.errorMessage}
+ + + + + {`${command.commandDefinition.name} --help`} + ), + }} + /> + ); } diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx index d23b051e1c3b..d1660b1ffe95 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx @@ -155,7 +155,7 @@ export const CommandList = memo(({ commands, display = 'defaul ( commandsByGroup: CommandDefinition[] ): Array<{ - [key: string]: { name: string; about: React.ElementType | string }; + [key: string]: { name: string; about: React.ReactNode | string }; }> => { if (commandsByGroup[0].helpGroupLabel === HELP_GROUPS.supporting.label) { return [...COMMON_ARGS, ...commandsByGroup].map((command) => ({ @@ -201,15 +201,23 @@ export const CommandList = memo(({ commands, display = 'defaul command.RenderComponent && ( diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx index 10e1ac88af53..a29564214cca 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.test.tsx @@ -226,7 +226,7 @@ describe('When a Console command is entered by the user', () => { const cmd1Definition = commands.find((command) => command.name === 'cmd1'); if (!cmd1Definition) { - throw new Error('cmd1 defintion not fount'); + throw new Error('cmd1 defintion not found'); } cmd1Definition.validate = () => 'command is invalid'; @@ -235,7 +235,7 @@ describe('When a Console command is entered by the user', () => { enterCommand('cmd1'); await waitFor(() => { - expect(renderResult.getByTestId('test-badArgument-message').textContent).toEqual( + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( 'command is invalid' ); }); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx index 3d727b2bcdac..7c2a9985cb74 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/console_state/state_update_handlers/handle_execute_command.tsx @@ -25,6 +25,7 @@ import type { ParsedCommandInterface } from '../../../service/parsed_command_inp import { parseCommandInput } from '../../../service/parsed_command_input'; import { UnknownCommand } from '../../unknown_comand'; import { BadArgument } from '../../bad_argument'; +import { ValidationError } from '../../validation_error'; import type { Command, CommandDefinition, CommandExecutionComponentProps } from '../../../types'; const toCliArgumentOption = (argName: string) => `--${argName}`; @@ -449,7 +450,7 @@ export const handleExecuteCommand: ConsoleStoreReducer< return updateStateWithNewCommandHistoryItem( state, createCommandHistoryEntry( - cloneCommandDefinitionWithNewRenderComponent(command, BadArgument), + cloneCommandDefinitionWithNewRenderComponent(command, ValidationError), createCommandExecutionState({ errorMessage: validationResult, }), diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx new file mode 100644 index 000000000000..2b372fd6c8f5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/components/console/components/validation_error.tsx @@ -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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ReactNode } from 'react'; +import React, { memo, useEffect } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiSpacer } from '@elastic/eui'; +import { UnsupportedMessageCallout } from './unsupported_message_callout'; +import type { CommandExecutionComponentProps } from '../types'; +import { CommandInputUsage } from './command_usage'; +import { useDataTestSubj } from '../hooks/state_selectors/use_data_test_subj'; +import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; +import { ConsoleCodeBlock } from './console_code_block'; + +/** + * Shows a validation error. The error message needs to be defined via the Command defintion's + * `validate` + */ +export const ValidationError = memo< + CommandExecutionComponentProps<{}, { errorMessage: ReactNode }> +>(({ command, setStatus, store }) => { + const getTestId = useTestIdGenerator(useDataTestSubj()); + + useEffect(() => { + setStatus('success'); + }, [setStatus]); + + return ( + + + + } + data-test-subj={getTestId('validationError')} + > +
{store.errorMessage}
+ + + + + {`${command.commandDefinition.name} --help`} + ), + }} + /> + +
+ ); +}); +ValidationError.displayName = 'ValidationError'; diff --git a/x-pack/plugins/security_solution/public/management/components/console/types.ts b/x-pack/plugins/security_solution/public/management/components/console/types.ts index f5ee45733f86..7275922663be 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/types.ts +++ b/x-pack/plugins/security_solution/public/management/components/console/types.ts @@ -7,7 +7,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type { ComponentType } from 'react'; +import type { ComponentType, ReactNode } from 'react'; import type { CommonProps } from '@elastic/eui'; import type { CommandExecutionResultComponent } from './components/command_execution_result'; import type { CommandExecutionState } from './components/console_state/types'; @@ -35,7 +35,7 @@ export interface CommandArgs { export interface CommandDefinition { name: string; - about: ComponentType | string; + about: ReactNode; /** * The Component that will be used to render the Command */ @@ -53,6 +53,10 @@ export interface CommandDefinition { * the console's built in output. */ HelpComponent?: CommandExecutionComponent; + /** + * If defined, the button to add to the text bar will be disabled. + */ + helpDisabled?: boolean; /** * A store for any data needed when the command is executed. * The entire `CommandDefinition` is passed along to the component diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts index 399c4add348f..0891f2d3a8e6 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/endpoint_response_actions_console_commands.ts @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import type { CommandDefinition } from '../console'; +import type { Command, CommandDefinition } from '../console'; import { IsolateActionResult } from './isolate_action'; import { ReleaseActionResult } from './release_action'; import { KillProcessActionResult } from './kill_process_action'; @@ -14,6 +14,13 @@ import { SuspendProcessActionResult } from './suspend_process_action'; import { EndpointStatusActionResult } from './status_action'; import { GetProcessesActionResult } from './get_processes_action'; import type { ParsedArgData } from '../console/service/parsed_command_input'; +import type { ImmutableArray } from '../../../../common/endpoint/types'; +import { UPGRADE_ENDPOINT_FOR_RESPONDER } from '../../../common/translations'; +import type { + ResponderCapabilities, + ResponderCommands, +} from '../../../../common/endpoint/constants'; +import { getCommandAboutInfo } from './get_command_about_info'; const emptyArgumentValidator = (argData: ParsedArgData): true | string => { if (argData?.length > 0 && argData[0]?.trim().length > 0) { @@ -38,6 +45,27 @@ const pidValidator = (argData: ParsedArgData): true | string => { } }; +const commandToCapabilitiesMap = new Map([ + ['isolate', 'isolation'], + ['release', 'isolation'], + ['kill-process', 'kill_process'], + ['suspend-process', 'suspend_process'], + ['processes', 'running_processes'], +]); + +const capabilitiesValidator = (command: Command): true | string => { + const endpointCapabilities: ResponderCapabilities[] = command.commandDefinition.meta.capabilities; + const responderCapability = commandToCapabilitiesMap.get( + command.commandDefinition.name as ResponderCommands + ); + if (responderCapability) { + if (endpointCapabilities.includes(responderCapability)) { + return true; + } + } + return UPGRADE_ENDPOINT_FOR_RESPONDER; +}; + const HELP_GROUPS = Object.freeze({ responseActions: { position: 0, @@ -62,21 +90,37 @@ const COMMENT_ARG_ABOUT = i18n.translate( { defaultMessage: 'A comment to go along with the action' } ); -export const getEndpointResponseActionsConsoleCommands = ( - endpointAgentId: string -): CommandDefinition[] => { +export const getEndpointResponseActionsConsoleCommands = ({ + endpointAgentId, + endpointCapabilities, +}: { + endpointAgentId: string; + endpointCapabilities: ImmutableArray; +}): CommandDefinition[] => { + const doesEndpointSupportCommand = (commandName: ResponderCommands) => { + const responderCapability = commandToCapabilitiesMap.get(commandName); + if (responderCapability) { + return endpointCapabilities.includes(responderCapability); + } + return false; + }; return [ { name: 'isolate', - about: i18n.translate('xpack.securitySolution.endpointConsoleCommands.isolate.about', { - defaultMessage: 'Isolate the host', + about: getCommandAboutInfo({ + aboutInfo: i18n.translate('xpack.securitySolution.endpointConsoleCommands.isolate.about', { + defaultMessage: 'Isolate the host', + }), + isSupported: doesEndpointSupportCommand('isolate'), }), RenderComponent: IsolateActionResult, meta: { endpointId: endpointAgentId, + capabilities: endpointCapabilities, }, exampleUsage: 'isolate --comment "isolate this host"', exampleInstruction: ENTER_OR_ADD_COMMENT_ARG_INSTRUCTION, + validate: capabilitiesValidator, args: { comment: { required: false, @@ -87,18 +131,24 @@ export const getEndpointResponseActionsConsoleCommands = ( helpGroupLabel: HELP_GROUPS.responseActions.label, helpGroupPosition: HELP_GROUPS.responseActions.position, helpCommandPosition: 0, + helpDisabled: doesEndpointSupportCommand('isolate') === false, }, { name: 'release', - about: i18n.translate('xpack.securitySolution.endpointConsoleCommands.release.about', { - defaultMessage: 'Release the host', + about: getCommandAboutInfo({ + aboutInfo: i18n.translate('xpack.securitySolution.endpointConsoleCommands.release.about', { + defaultMessage: 'Release the host', + }), + isSupported: doesEndpointSupportCommand('release'), }), RenderComponent: ReleaseActionResult, meta: { endpointId: endpointAgentId, + capabilities: endpointCapabilities, }, exampleUsage: 'release --comment "release this host"', exampleInstruction: ENTER_OR_ADD_COMMENT_ARG_INSTRUCTION, + validate: capabilitiesValidator, args: { comment: { required: false, @@ -109,18 +159,27 @@ export const getEndpointResponseActionsConsoleCommands = ( helpGroupLabel: HELP_GROUPS.responseActions.label, helpGroupPosition: HELP_GROUPS.responseActions.position, helpCommandPosition: 1, + helpDisabled: doesEndpointSupportCommand('release') === false, }, { name: 'kill-process', - about: i18n.translate('xpack.securitySolution.endpointConsoleCommands.killProcess.about', { - defaultMessage: 'Kill/terminate a process', + about: getCommandAboutInfo({ + aboutInfo: i18n.translate( + 'xpack.securitySolution.endpointConsoleCommands.killProcess.about', + { + defaultMessage: 'Kill/terminate a process', + } + ), + isSupported: doesEndpointSupportCommand('kill-process'), }), RenderComponent: KillProcessActionResult, meta: { endpointId: endpointAgentId, + capabilities: endpointCapabilities, }, exampleUsage: 'kill-process --pid 123 --comment "kill this process"', exampleInstruction: ENTER_PID_OR_ENTITY_ID_INSTRUCTION, + validate: capabilitiesValidator, mustHaveArgs: true, args: { comment: { @@ -153,18 +212,27 @@ export const getEndpointResponseActionsConsoleCommands = ( helpGroupLabel: HELP_GROUPS.responseActions.label, helpGroupPosition: HELP_GROUPS.responseActions.position, helpCommandPosition: 4, + helpDisabled: doesEndpointSupportCommand('kill-process') === false, }, { name: 'suspend-process', - about: i18n.translate('xpack.securitySolution.endpointConsoleCommands.suspendProcess.about', { - defaultMessage: 'Temporarily suspend a process', + about: getCommandAboutInfo({ + aboutInfo: i18n.translate( + 'xpack.securitySolution.endpointConsoleCommands.suspendProcess.about', + { + defaultMessage: 'Temporarily suspend a process', + } + ), + isSupported: doesEndpointSupportCommand('suspend-process'), }), RenderComponent: SuspendProcessActionResult, meta: { endpointId: endpointAgentId, + capabilities: endpointCapabilities, }, exampleUsage: 'suspend-process --pid 123 --comment "suspend this process"', exampleInstruction: ENTER_PID_OR_ENTITY_ID_INSTRUCTION, + validate: capabilitiesValidator, mustHaveArgs: true, args: { comment: { @@ -200,6 +268,7 @@ export const getEndpointResponseActionsConsoleCommands = ( helpGroupLabel: HELP_GROUPS.responseActions.label, helpGroupPosition: HELP_GROUPS.responseActions.position, helpCommandPosition: 5, + helpDisabled: doesEndpointSupportCommand('suspend-process') === false, }, { name: 'status', @@ -216,15 +285,23 @@ export const getEndpointResponseActionsConsoleCommands = ( }, { name: 'processes', - about: i18n.translate('xpack.securitySolution.endpointConsoleCommands.processes.about', { - defaultMessage: 'Show all running processes', + about: getCommandAboutInfo({ + aboutInfo: i18n.translate( + 'xpack.securitySolution.endpointConsoleCommands.processes.about', + { + defaultMessage: 'Show all running processes', + } + ), + isSupported: doesEndpointSupportCommand('processes'), }), RenderComponent: GetProcessesActionResult, meta: { endpointId: endpointAgentId, + capabilities: endpointCapabilities, }, exampleUsage: 'processes --comment "get the processes"', exampleInstruction: ENTER_OR_ADD_COMMENT_ARG_INSTRUCTION, + validate: capabilitiesValidator, args: { comment: { required: false, @@ -235,6 +312,7 @@ export const getEndpointResponseActionsConsoleCommands = ( helpGroupLabel: HELP_GROUPS.responseActions.label, helpGroupPosition: HELP_GROUPS.responseActions.position, helpCommandPosition: 3, + helpDisabled: doesEndpointSupportCommand('processes') === false, }, ]; }; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_command_about_info.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_command_about_info.tsx new file mode 100644 index 000000000000..3a973defa2d0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_command_about_info.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIconTip } from '@elastic/eui'; + +const UNSUPPORTED_COMMAND_INFO = i18n.translate( + 'xpack.securitySolution.endpointConsoleCommands.suspendProcess.unsupportedCommandInfo', + { + defaultMessage: + 'This version of the Endpoint does not support this command. Upgrade your Agent in Fleet to use the latest response actions.', + } +); + +const DisabledTooltip = React.memo(() => { + return ; +}); +DisabledTooltip.displayName = 'DisabledTooltip'; + +export const getCommandAboutInfo = ({ + aboutInfo, + isSupported, +}: { + aboutInfo: string; + isSupported: boolean; +}) => { + return isSupported ? ( + aboutInfo + ) : ( + <> + {aboutInfo} + + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_processes_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_processes_action.test.tsx index 8977b1fb425a..bb065a9392d4 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_processes_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/get_processes_action.test.tsx @@ -16,9 +16,13 @@ import { getEndpointResponseActionsConsoleCommands } from './endpoint_response_a import { responseActionsHttpMocks } from '../../mocks/response_actions_http_mocks'; import { enterConsoleCommand } from '../console/mocks'; import { waitFor } from '@testing-library/react'; +import type { ResponderCapabilities } from '../../../../common/endpoint/constants'; +import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; describe('When using processes action from response actions console', () => { - let render: () => Promise>; + let render: ( + capabilities?: ResponderCapabilities[] + ) => Promise>; let renderResult: ReturnType; let apiMocks: ReturnType; let consoleManagerMockAccess: ReturnType< @@ -30,14 +34,17 @@ describe('When using processes action from response actions console', () => { apiMocks = responseActionsHttpMocks(mockedContext.coreStart.http); - render = async () => { + render = async (capabilities: ResponderCapabilities[] = [...RESPONDER_CAPABILITIES]) => { renderResult = mockedContext.render( { return { consoleProps: { 'data-test-subj': 'test', - commands: getEndpointResponseActionsConsoleCommands('a.b.c'), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId: 'a.b.c', + endpointCapabilities: [...capabilities], + }), }, }; }} @@ -53,6 +60,15 @@ describe('When using processes action from response actions console', () => { }; }); + it('should show an error if the `running_processes` capability is not present in the endpoint', async () => { + await render([]); + enterConsoleCommand(renderResult, 'processes'); + + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( + 'The current version of the Agent does not support this feature. Upgrade your Agent through Fleet to use this feature and new response actions such as killing and suspending processes.' + ); + }); + it('should call `running-procs` api when command is entered', async () => { await render(); enterConsoleCommand(renderResult, 'processes'); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/isolate_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/isolate_action.test.tsx index 7f84082c6462..32a067eed085 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/isolate_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/isolate_action.test.tsx @@ -17,9 +17,13 @@ import { responseActionsHttpMocks } from '../../mocks/response_actions_http_mock import { enterConsoleCommand } from '../console/mocks'; import { waitFor } from '@testing-library/react'; import { getDeferred } from '../mocks'; +import type { ResponderCapabilities } from '../../../../common/endpoint/constants'; +import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; describe('When using isolate action from response actions console', () => { - let render: () => Promise>; + let render: ( + capabilities?: ResponderCapabilities[] + ) => Promise>; let renderResult: ReturnType; let apiMocks: ReturnType; let consoleManagerMockAccess: ReturnType< @@ -31,14 +35,17 @@ describe('When using isolate action from response actions console', () => { apiMocks = responseActionsHttpMocks(mockedContext.coreStart.http); - render = async () => { + render = async (capabilities: ResponderCapabilities[] = [...RESPONDER_CAPABILITIES]) => { renderResult = mockedContext.render( { return { consoleProps: { 'data-test-subj': 'test', - commands: getEndpointResponseActionsConsoleCommands('a.b.c'), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId: 'a.b.c', + endpointCapabilities: [...capabilities], + }), }, }; }} @@ -54,6 +61,15 @@ describe('When using isolate action from response actions console', () => { }; }); + it('should show an error if the `isolation` capability is not present in the endpoint', async () => { + await render([]); + enterConsoleCommand(renderResult, 'isolate'); + + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( + 'The current version of the Agent does not support this feature. Upgrade your Agent through Fleet to use this feature and new response actions such as killing and suspending processes.' + ); + }); + it('should call `isolate` api when command is entered', async () => { await render(); enterConsoleCommand(renderResult, 'isolate'); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/kill_process_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/kill_process_action.test.tsx index f9c8eab8dcb7..167c3feb554a 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/kill_process_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/kill_process_action.test.tsx @@ -16,9 +16,13 @@ import { getEndpointResponseActionsConsoleCommands } from './endpoint_response_a import { enterConsoleCommand } from '../console/mocks'; import { waitFor } from '@testing-library/react'; import { responseActionsHttpMocks } from '../../mocks/response_actions_http_mocks'; +import type { ResponderCapabilities } from '../../../../common/endpoint/constants'; +import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; describe('When using the kill-process action from response actions console', () => { - let render: () => Promise>; + let render: ( + capabilities?: ResponderCapabilities[] + ) => Promise>; let renderResult: ReturnType; let apiMocks: ReturnType; let consoleManagerMockAccess: ReturnType< @@ -30,14 +34,17 @@ describe('When using the kill-process action from response actions console', () apiMocks = responseActionsHttpMocks(mockedContext.coreStart.http); - render = async () => { + render = async (capabilities: ResponderCapabilities[] = [...RESPONDER_CAPABILITIES]) => { renderResult = mockedContext.render( { return { consoleProps: { 'data-test-subj': 'test', - commands: getEndpointResponseActionsConsoleCommands('a.b.c'), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId: 'a.b.c', + endpointCapabilities: [...capabilities], + }), }, }; }} @@ -53,6 +60,15 @@ describe('When using the kill-process action from response actions console', () }; }); + it('should show an error if the `kill_process` capability is not present in the endpoint', async () => { + await render([]); + enterConsoleCommand(renderResult, 'kill-process --pid 123'); + + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( + 'The current version of the Agent does not support this feature. Upgrade your Agent through Fleet to use this feature and new response actions such as killing and suspending processes.' + ); + }); + it('should call `kill-process` api when command is entered', async () => { await render(); enterConsoleCommand(renderResult, 'kill-process --pid 123'); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/release_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/release_action.test.tsx index 3ea1a36522ee..e6764185ed8e 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/release_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/release_action.test.tsx @@ -17,9 +17,13 @@ import { enterConsoleCommand } from '../console/mocks'; import { waitFor } from '@testing-library/react'; import { responseActionsHttpMocks } from '../../mocks/response_actions_http_mocks'; import { getDeferred } from '../mocks'; +import type { ResponderCapabilities } from '../../../../common/endpoint/constants'; +import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; describe('When using the release action from response actions console', () => { - let render: () => Promise>; + let render: ( + capabilities?: ResponderCapabilities[] + ) => Promise>; let renderResult: ReturnType; let apiMocks: ReturnType; let consoleManagerMockAccess: ReturnType< @@ -31,14 +35,17 @@ describe('When using the release action from response actions console', () => { apiMocks = responseActionsHttpMocks(mockedContext.coreStart.http); - render = async () => { + render = async (capabilities: ResponderCapabilities[] = [...RESPONDER_CAPABILITIES]) => { renderResult = mockedContext.render( { return { consoleProps: { 'data-test-subj': 'test', - commands: getEndpointResponseActionsConsoleCommands('a.b.c'), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId: 'a.b.c', + endpointCapabilities: [...capabilities], + }), }, }; }} @@ -54,6 +61,15 @@ describe('When using the release action from response actions console', () => { }; }); + it('should show an error if the `isolation` capability is not present in the endpoint', async () => { + await render([]); + enterConsoleCommand(renderResult, 'release'); + + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( + 'The current version of the Agent does not support this feature. Upgrade your Agent through Fleet to use this feature and new response actions such as killing and suspending processes.' + ); + }); + it('should call `release` api when command is entered', async () => { await render(); enterConsoleCommand(renderResult, 'release'); diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/suspend_process_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/suspend_process_action.test.tsx index e1ad7357d596..4d12af721a02 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/suspend_process_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/suspend_process_action.test.tsx @@ -16,9 +16,13 @@ import { getEndpointResponseActionsConsoleCommands } from './endpoint_response_a import { enterConsoleCommand } from '../console/mocks'; import { waitFor } from '@testing-library/react'; import { responseActionsHttpMocks } from '../../mocks/response_actions_http_mocks'; +import type { ResponderCapabilities } from '../../../../common/endpoint/constants'; +import { RESPONDER_CAPABILITIES } from '../../../../common/endpoint/constants'; describe('When using the suspend-process action from response actions console', () => { - let render: () => Promise>; + let render: ( + capabilities?: ResponderCapabilities[] + ) => Promise>; let renderResult: ReturnType; let apiMocks: ReturnType; let consoleManagerMockAccess: ReturnType< @@ -30,14 +34,17 @@ describe('When using the suspend-process action from response actions console', apiMocks = responseActionsHttpMocks(mockedContext.coreStart.http); - render = async () => { + render = async (capabilities: ResponderCapabilities[] = [...RESPONDER_CAPABILITIES]) => { renderResult = mockedContext.render( { return { consoleProps: { 'data-test-subj': 'test', - commands: getEndpointResponseActionsConsoleCommands('a.b.c'), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId: 'a.b.c', + endpointCapabilities: [...capabilities], + }), }, }; }} @@ -53,6 +60,15 @@ describe('When using the suspend-process action from response actions console', }; }); + it('should show an error if the `suspend_process` capability is not present in the endpoint', async () => { + await render([]); + enterConsoleCommand(renderResult, 'suspend-process --pid 123'); + + expect(renderResult.getByTestId('test-validationError-message').textContent).toEqual( + 'The current version of the Agent does not support this feature. Upgrade your Agent through Fleet to use this feature and new response actions such as killing and suspending processes.' + ); + }); + it('should call `suspend-process` api when command is entered', async () => { await render(); enterConsoleCommand(renderResult, 'suspend-process --pid 123'); diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx index 1d8808ca52d7..8c0236a42073 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx @@ -48,7 +48,10 @@ export const useWithShowEndpointResponder = (): ShowEndpointResponseActionsConso endpoint: endpointMetadata, }, consoleProps: { - commands: getEndpointResponseActionsConsoleCommands(endpointAgentId), + commands: getEndpointResponseActionsConsoleCommands({ + endpointAgentId, + endpointCapabilities: endpointMetadata.Endpoint.capabilities ?? [], + }), 'data-test-subj': 'endpointResponseActionsConsole', TitleComponent: () => , }, diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx index b3e1ce76480f..3c9f81df4c52 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx @@ -21,8 +21,6 @@ import type { ContextMenuItemNavByRouterProps } from '../../../../components/con import { isEndpointHostIsolated } from '../../../../../common/utils/validators'; import { useLicense } from '../../../../../common/hooks/use_license'; import { isIsolationSupported } from '../../../../../../common/endpoint/service/host_isolation/utils'; -import { useDoesEndpointSupportResponder } from '../../../../../common/hooks/endpoint/use_does_endpoint_support_responder'; -import { UPGRADE_ENDPOINT_FOR_RESPONDER } from '../../../../../common/translations'; interface Options { isEndpointList: boolean; @@ -45,7 +43,6 @@ export const useEndpointActionItems = ( 'responseActionsConsoleEnabled' ); const canAccessResponseConsole = useUserPrivileges().endpointPrivileges.canAccessResponseConsole; - const isResponderCapabilitiesEnabled = useDoesEndpointSupportResponder(endpointMetadata); return useMemo(() => { if (endpointMetadata) { @@ -128,7 +125,6 @@ export const useEndpointActionItems = ( 'data-test-subj': 'console', icon: 'console', key: 'consoleLink', - disabled: !isResponderCapabilitiesEnabled, onClick: (ev: React.MouseEvent) => { ev.preventDefault(); showEndpointResponseActionsConsole(endpointMetadata); @@ -139,9 +135,6 @@ export const useEndpointActionItems = ( defaultMessage="Respond" /> ), - toolTipContent: !isResponderCapabilitiesEnabled - ? UPGRADE_ENDPOINT_FOR_RESPONDER - : '', }, ] : []), @@ -264,6 +257,5 @@ export const useEndpointActionItems = ( isResponseActionsConsoleEnabled, showEndpointResponseActionsConsole, options?.isEndpointList, - isResponderCapabilitiesEnabled, ]); }; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx index 1d47f70227df..bbee0e695a8d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.test.tsx @@ -1116,19 +1116,6 @@ describe('when on the endpoint list page', () => { expect(responderButton).not.toHaveAttribute('disabled'); }); - it('disables the Responder option and shows a tooltip when no processes capabilities are present in the endpoint', async () => { - const firstActionButton = (await renderResult.findAllByTestId('endpointTableRowActions'))[0]; - const secondActionButton = (await renderResult.findAllByTestId('endpointTableRowActions'))[1]; - - reactTestingLibrary.act(() => { - // close any open action menus - userEvent.click(firstActionButton); - userEvent.click(secondActionButton); - }); - const responderButton = await renderResult.findByTestId('console'); - expect(responderButton).toHaveAttribute('disabled'); - }); - it('navigates to the Actions log flyout', async () => { const actionsLink = await renderResult.findByTestId('actionsLink'); diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx index 425b363c0c82..0eec45c67c11 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/index.tsx @@ -323,7 +323,7 @@ export const EndpointList = () => { const setTableRowProps = useCallback((endpoint: HostInfo) => { return { - 'data-endpoint-Id': endpoint.metadata.agent.id, + 'data-endpoint-id': endpoint.metadata.agent.id, }; }, []); From 031c34e947f328c671892c820a617ff388f37a49 Mon Sep 17 00:00:00 2001 From: Lee Drengenberg Date: Fri, 26 Aug 2022 11:50:07 -0500 Subject: [PATCH 36/50] [DOCS] Update rule name to match query my* (#139563) --- docs/api/alerting/find_rules.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/alerting/find_rules.asciidoc b/docs/api/alerting/find_rules.asciidoc index a3e374b641cc..5c224ef1d07a 100644 --- a/docs/api/alerting/find_rules.asciidoc +++ b/docs/api/alerting/find_rules.asciidoc @@ -121,7 +121,7 @@ The API returns the following: }, "actions": [], "tags": [], - "name": "test rule", + "name": "my test rule", "enabled": true, "throttle": null, "api_key_owner": "elastic", From 05d3d76c1e7ed9352f6c189b8fa3104a2b931144 Mon Sep 17 00:00:00 2001 From: Juan Pablo Djeredjian Date: Fri, 26 Aug 2022 18:53:06 +0200 Subject: [PATCH 37/50] [Security Solution][Detections] Fix selected rules count and clear selection label on bulk unselect rules with checkbox (#139461) Fixes: https://github.com/elastic/kibana/issues/136616 ## Summary ### Behaviour before fix Selected rules count doesn't update in the special case of a user having selected all rules via the "Select all XXX rules" bulk action button from the Utility bar, and later trying to unselect rules via the "Select/Unselect All rows" checkbox of the table. In this specific case, the selected rules label got stuck at "Selected XXX Rules" and the the "Select All XXX rules" bulk action button got stuck on "Clear selection". See video below for details: https://user-images.githubusercontent.com/5354282/186687704-c1a4a36b-6f49-4347-abf3-6cfc648b586e.mp4 ### Behaviour after fix If, after selection all rules with the bulk select all rules button, the user clicks on the "Select/Unselect All rows" checkbox of the table: - the selected rules label resets to "Selected 0 Rules" - the "bulk select all rules" button from the Utility bar switches back from its "Clear selection" state back to its "Select all XXX rules" state. https://user-images.githubusercontent.com/5354282/186687602-815ef9a0-53be-4476-a8bb-9edcc5df7db4.mov ## Other changes - Create constant for API route `/api/detection_engine/rules/_find` as `DETECTION_ENGINE_RULES_URL_FIND` and replaces its uses. ### Checklist Delete any items that are not applicable to this PR. - [x] 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)) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../security_solution/common/constants.ts | 1 + .../detection_rules/prebuilt_rules.spec.ts | 3 +- .../detection_rules/rules_selection.spec.ts | 78 +++++++++++++++++++ .../cypress/screens/alerts_detection_rules.ts | 3 + .../cypress/tasks/alerts_detection_rules.ts | 16 ++++ .../containers/detection_engine/rules/api.ts | 14 ++-- .../rules/all/rules_tables.tsx | 6 ++ .../routes/__mocks__/request_responses.ts | 3 +- .../routes/rules/find_rules_route.test.ts | 6 +- .../routes/rules/find_rules_route.ts | 4 +- 10 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 x-pack/plugins/security_solution/cypress/integration/detection_rules/rules_selection.spec.ts diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 459e13d9eacc..e86e57e00ca3 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -263,6 +263,7 @@ export const DETECTION_ENGINE_PREPACKAGED_URL = export const DETECTION_ENGINE_PRIVILEGES_URL = `${DETECTION_ENGINE_URL}/privileges` as const; export const DETECTION_ENGINE_INDEX_URL = `${DETECTION_ENGINE_URL}/index` as const; +export const DETECTION_ENGINE_RULES_URL_FIND = `${DETECTION_ENGINE_RULES_URL}/_find` as const; export const DETECTION_ENGINE_TAGS_URL = `${DETECTION_ENGINE_URL}/tags` as const; export const DETECTION_ENGINE_PREPACKAGED_RULES_STATUS_URL = `${DETECTION_ENGINE_RULES_URL}/prepackaged/_status` as const; diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/prebuilt_rules.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/prebuilt_rules.spec.ts index ed5f5629985a..cb7e8fbe9828 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/prebuilt_rules.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/prebuilt_rules.spec.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { DETECTION_ENGINE_RULES_URL_FIND } from '../../../common/constants'; import { rawRules } from '../../../server/lib/detection_engine/rules/prepackaged_rules'; import { COLLAPSED_ACTION_BTN, @@ -59,7 +60,7 @@ describe('Prebuilt rules', () => { changeRowsPerPageTo(rowsPerPage); - cy.request({ url: '/api/detection_engine/rules/_find' }).then(({ body }) => { + cy.request({ url: DETECTION_ENGINE_RULES_URL_FIND }).then(({ body }) => { // Assert the total number of loaded rules equals the expected number of in-memory rules expect(body.total).to.equal(rawRules.length); // Assert the table was refreshed with the rules returned by the API request diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/rules_selection.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/rules_selection.spec.ts new file mode 100644 index 000000000000..28edde413d07 --- /dev/null +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/rules_selection.spec.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { totalNumberOfPrebuiltRules } from '../../objects/rule'; +import { + SELECTED_RULES_NUMBER_LABEL, + SELECT_ALL_RULES_BTN, + SELECT_ALL_RULES_ON_PAGE_CHECKBOX, +} from '../../screens/alerts_detection_rules'; +import { + loadPrebuiltDetectionRules, + selectNumberOfRules, + unselectNumberOfRules, + waitForPrebuiltDetectionRulesToBeLoaded, +} from '../../tasks/alerts_detection_rules'; +import { cleanKibana } from '../../tasks/common'; +import { login, visitWithoutDateRange } from '../../tasks/login'; +import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../urls/navigation'; + +describe('Rules selection', () => { + beforeEach(() => { + cleanKibana(); + login(); + visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); + }); + + it('should correctly update the selection label when rules are individually selected and unselected', () => { + loadPrebuiltDetectionRules(); + waitForPrebuiltDetectionRulesToBeLoaded(); + + selectNumberOfRules(2); + + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', '2'); + + unselectNumberOfRules(2); + + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', '0'); + }); + + it('should correctly update the selection label when rules are bulk selected and then bulk un-selected', () => { + loadPrebuiltDetectionRules(); + waitForPrebuiltDetectionRulesToBeLoaded(); + + cy.get(SELECT_ALL_RULES_BTN).click(); + + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', totalNumberOfPrebuiltRules); + + const bulkSelectButton = cy.get(SELECT_ALL_RULES_BTN); + + // Un-select all rules via the Bulk Selection button from the Utility bar + bulkSelectButton.click(); + + // Current selection should be 0 rules + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', '0'); + // Bulk selection button should be back to displaying all rules + cy.get(SELECT_ALL_RULES_BTN).should('contain.text', totalNumberOfPrebuiltRules); + }); + + it('should correctly update the selection label when rules are bulk selected and then unselected via the table select all checkbox', () => { + loadPrebuiltDetectionRules(); + waitForPrebuiltDetectionRulesToBeLoaded(); + + cy.get(SELECT_ALL_RULES_BTN).click(); + + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', totalNumberOfPrebuiltRules); + + // Un-select all rules via the Un-select All checkbox from the table + cy.get(SELECT_ALL_RULES_ON_PAGE_CHECKBOX).click(); + + // Current selection should be 0 rules + cy.get(SELECTED_RULES_NUMBER_LABEL).should('contain.text', '0'); + // Bulk selection button should be back to displaying all rules + cy.get(SELECT_ALL_RULES_BTN).should('contain.text', totalNumberOfPrebuiltRules); + }); +}); diff --git a/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts b/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts index 37f69755c653..c34250690c33 100644 --- a/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts +++ b/x-pack/plugins/security_solution/cypress/screens/alerts_detection_rules.ts @@ -90,6 +90,9 @@ export const rowsPerPageSelector = (count: number) => export const pageSelector = (pageNumber: number) => `[data-test-subj="pagination-button-${pageNumber - 1}"]`; +export const ruleCheckboxByIdSelector = (id: string) => + `[data-test-subj="checkboxSelectRow-${id}"]`; + export const SELECT_ALL_RULES_BTN = '[data-test-subj="selectAllRules"]'; export const RULES_EMPTY_PROMPT = '[data-test-subj="rulesEmptyPrompt"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts index 40ab35a2d7b5..8011290e23bf 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts_detection_rules.ts @@ -201,6 +201,22 @@ export const selectNumberOfRules = (numberOfRules: number) => { } }; +/** + * Unselects a passed number of rules. To use together with selectNumberOfRules + * as this utility will expect and check the passed number of rules + * to have been previously checked. + * @param numberOfRules The number of rules to click/check + */ +export const unselectNumberOfRules = (numberOfRules: number) => { + for (let i = 0; i < numberOfRules; i++) { + cy.get(RULE_CHECKBOX) + .eq(i) + .should('be.checked') + .pipe(($el) => $el.trigger('click')) + .should('not.be.checked'); + } +}; + export const selectAllRules = () => { cy.get(SELECT_ALL_RULES_BTN).contains('Select all').click(); cy.get(SELECT_ALL_RULES_BTN).contains('Clear'); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts index dfee0f418d2d..0e2f238aa527 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/api.ts @@ -16,6 +16,7 @@ import { DETECTION_ENGINE_RULES_BULK_ACTION, DETECTION_ENGINE_RULES_PREVIEW, DETECTION_ENGINE_INSTALLED_INTEGRATIONS_URL, + DETECTION_ENGINE_RULES_URL_FIND, } from '../../../../../common/constants'; import type { BulkAction } from '../../../../../common/detection_engine/schemas/common'; import type { @@ -151,14 +152,11 @@ export const fetchRules = async ({ ...(filterString !== '' ? { filter: filterString } : {}), }; - return KibanaServices.get().http.fetch( - `${DETECTION_ENGINE_RULES_URL}/_find`, - { - method: 'GET', - query, - signal, - } - ); + return KibanaServices.get().http.fetch(DETECTION_ENGINE_RULES_URL_FIND, { + method: 'GET', + query, + signal, + }); }; /** diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/rules_tables.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/rules_tables.tsx index d04832d2e738..b61a568ea35d 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/rules_tables.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/rules_tables.tsx @@ -219,6 +219,12 @@ export const RulesTables = React.memo( */ if (isSelectAllCalled.current) { isSelectAllCalled.current = false; + // Handle special case of unselecting all rules via checkbox + // after all rules were selected via Bulk select. + if (selected.length === 0) { + setIsAllSelected(false); + setSelectedRuleIds([]); + } } else { setSelectedRuleIds(selected.map(({ id }) => id)); setIsAllSelected(false); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts index bbc40dcf4b8d..9f2f57631353 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_responses.ts @@ -23,6 +23,7 @@ import { DETECTION_ENGINE_RULES_BULK_UPDATE, DETECTION_ENGINE_RULES_BULK_DELETE, DETECTION_ENGINE_RULES_BULK_CREATE, + DETECTION_ENGINE_RULES_URL_FIND, } from '../../../../../common/constants'; import type { RuleAlertType, HapiReadableStream } from '../../rules/types'; import { requestMock } from './request'; @@ -97,7 +98,7 @@ export const getReadRequestWithId = (id: string) => export const getFindRequest = () => requestMock.create({ method: 'get', - path: `${DETECTION_ENGINE_RULES_URL}/_find`, + path: DETECTION_ENGINE_RULES_URL_FIND, }); export const getReadBulkRequest = () => diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts index 0e26601d6454..b1f1ec8ead8a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.test.ts @@ -6,7 +6,7 @@ */ import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; +import { DETECTION_ENGINE_RULES_URL_FIND } from '../../../../../common/constants'; import { getQueryRuleParams } from '../../schemas/rule_schemas.mock'; import { requestContextMock, requestMock, serverMock } from '../__mocks__'; import { @@ -63,7 +63,7 @@ describe('find_rules', () => { test('allows optional query params', async () => { const request = requestMock.create({ method: 'get', - path: `${DETECTION_ENGINE_RULES_URL}/_find`, + path: DETECTION_ENGINE_RULES_URL_FIND, query: { page: 2, per_page: 20, @@ -79,7 +79,7 @@ describe('find_rules', () => { test('rejects unknown query params', async () => { const request = requestMock.create({ method: 'get', - path: `${DETECTION_ENGINE_RULES_URL}/_find`, + path: DETECTION_ENGINE_RULES_URL_FIND, query: { invalid_value: 'hi mom', }, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts index 4f5621440a92..fa28a16e7bd4 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts @@ -11,7 +11,7 @@ import { findRuleValidateTypeDependents } from '../../../../../common/detection_ import type { FindRulesSchemaDecoded } from '../../../../../common/detection_engine/schemas/request/find_rules_schema'; import { findRulesSchema } from '../../../../../common/detection_engine/schemas/request/find_rules_schema'; import type { SecuritySolutionPluginRouter } from '../../../../types'; -import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; +import { DETECTION_ENGINE_RULES_URL_FIND } from '../../../../../common/constants'; import { findRules } from '../../rules/find_rules'; import { buildSiemResponse } from '../utils'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; @@ -23,7 +23,7 @@ import { legacyGetBulkRuleActionsSavedObject } from '../../rule_actions/legacy_g export const findRulesRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => { router.get( { - path: `${DETECTION_ENGINE_RULES_URL}/_find`, + path: DETECTION_ENGINE_RULES_URL_FIND, validate: { query: buildRouteValidation( findRulesSchema From 6ff5d595facab1b0a9724b30e540d2bd45bd7110 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Fri, 26 Aug 2022 13:48:02 -0400 Subject: [PATCH 38/50] [Fleet] Preconfigured output should allow to delete fields causing too many bump revision (#139564) --- .../fleet/common/types/models/output.ts | 10 ++-- .../steps/install_fleet_server.tsx | 2 +- .../cloud_preconfiguration.test.ts | 59 ++++++++++++++++++- .../fleet/server/services/output.test.ts | 24 ++++++++ .../plugins/fleet/server/services/output.ts | 3 + .../services/preconfiguration/outputs.test.ts | 6 +- .../services/preconfiguration/outputs.ts | 40 +++++++++---- 7 files changed, 122 insertions(+), 22 deletions(-) diff --git a/x-pack/plugins/fleet/common/types/models/output.ts b/x-pack/plugins/fleet/common/types/models/output.ts index 49115ffbeeed..14b3986b67a7 100644 --- a/x-pack/plugins/fleet/common/types/models/output.ts +++ b/x-pack/plugins/fleet/common/types/models/output.ts @@ -17,19 +17,19 @@ export interface NewOutput { name: string; type: ValueOf; hosts?: string[]; - ca_sha256?: string; - ca_trusted_fingerprint?: string; - config_yaml?: string; + ca_sha256?: string | null; + ca_trusted_fingerprint?: string | null; + config_yaml?: string | null; ssl?: { certificate_authorities?: string[]; certificate?: string; key?: string; - }; + } | null; } export type OutputSOAttributes = NewOutput & { output_id?: string; - ssl?: string; // encrypted ssl field + ssl?: string | null; // encrypted ssl field }; export type Output = NewOutput & { diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/install_fleet_server.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/install_fleet_server.tsx index 71c67aa4204d..4189edfbd618 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/install_fleet_server.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/install_fleet_server.tsx @@ -73,7 +73,7 @@ const InstallFleetServerStepContent: React.FunctionComponent<{ fleetServerPolicyId, fleetServerHost, deploymentMode === 'production', - commandOutput?.ca_trusted_fingerprint, + commandOutput?.ca_trusted_fingerprint ?? undefined, kibanaVersion ); diff --git a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts index efc68f884938..ab5fc5b9500f 100644 --- a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts @@ -10,7 +10,7 @@ import Path from 'path'; import * as kbnTestServer from '@kbn/core/test_helpers/kbn_server'; import { AGENT_POLICY_INDEX } from '../../common'; -import type { PackagePolicySOAttributes } from '../../common/types'; +import type { PackagePolicySOAttributes, OutputSOAttributes } from '../../common/types'; import type { AgentPolicySOAttributes } from '../types'; import { useDockerRegistry, waitForFleetSetup } from './helpers'; @@ -331,5 +331,62 @@ describe.skip('Fleet preconfiguration reset', () => { ).toBeDefined(); }); }); + + describe('Support removing a field from output after first setup', () => { + beforeAll(async () => { + // 1. Start with a preconfigured policy withtout APM + const { startOrRestartKibana } = await startServers({ + xpack: { + fleet: { + outputs: [ + { + name: 'Elastic Cloud internal output', + type: 'elasticsearch', + id: 'es-containerhost', + hosts: ['https://cloudinternales:9200'], + config: { test: '123' }, + }, + ], + }, + }, + }); + + // 2. Change the output remove config + await startOrRestartKibana({ + xpack: { + fleet: { + outputs: [ + { + name: 'Elastic Cloud internal output', + type: 'elasticsearch', + id: 'es-containerhost', + hosts: ['https://cloudinternales:9200'], + }, + ], + }, + }, + }); + }); + + afterAll(async () => { + await stopServers(); + }); + + it('Works and preconfigure correctly agent policies', async () => { + const agentPolicies = await kbnServer.coreStart.savedObjects + .createInternalRepository() + .find({ + type: 'ingest-outputs', + perPage: 10000, + }); + + expect(agentPolicies.total).toBe(2); + const outputSO = agentPolicies.saved_objects.find( + (so) => so.attributes.output_id === 'es-containerhost' + ); + expect(outputSO).toBeDefined(); + expect(outputSO?.attributes.config_yaml).toBeNull(); + }); + }); }); }); diff --git a/x-pack/plugins/fleet/server/services/output.test.ts b/x-pack/plugins/fleet/server/services/output.test.ts index 893c77578f0e..0e063fa667ec 100644 --- a/x-pack/plugins/fleet/server/services/output.test.ts +++ b/x-pack/plugins/fleet/server/services/output.test.ts @@ -527,6 +527,30 @@ describe('Output Service', () => { expect(soClient.update).toBeCalled(); }); + it('Should call update with null fields if', async () => { + const soClient = getMockedSoClient({}); + mockedAgentPolicyService.list.mockResolvedValue({ + items: [{}], + } as unknown as ReturnType); + mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(false); + + await outputService.update(soClient, 'existing-logstash-output', { + is_default: true, + ca_sha256: null, + ca_trusted_fingerprint: null, + config_yaml: null, + ssl: null, + }); + + expect(soClient.update).toBeCalled(); + expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { + is_default: true, + ca_sha256: null, + ca_trusted_fingerprint: null, + config_yaml: null, + ssl: null, + }); + }); it('Should throw if you try to make that output the default output and somne policies using default output has APM integration', async () => { const soClient = getMockedSoClient({}); mockedAgentPolicyService.list.mockResolvedValue({ diff --git a/x-pack/plugins/fleet/server/services/output.ts b/x-pack/plugins/fleet/server/services/output.ts index 2ed64cf746ee..57c57619beac 100644 --- a/x-pack/plugins/fleet/server/services/output.ts +++ b/x-pack/plugins/fleet/server/services/output.ts @@ -369,6 +369,9 @@ class OutputService { if (data.ssl) { updateData.ssl = JSON.stringify(data.ssl); + } else if (data.ssl === null) { + // Explicitly set to null to allow to delete the field + updateData.ssl = null; } // ensure only default output exists diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts index 4e4db6c25282..a8eaa39d427d 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts @@ -209,15 +209,14 @@ describe('output preconfiguration', () => { expect(spyAgentPolicyServicBumpAllAgentPoliciesForOutput).toBeCalled(); }); - it('should not delete default output if preconfigured default output exists and changed', async () => { + it('should not update output if preconfigured output exists and did not changed', async () => { const soClient = savedObjectsClientMock.create(); const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; soClient.find.mockResolvedValue({ saved_objects: [], page: 0, per_page: 0, total: 0 }); - mockedOutputService.getDefaultDataOutputId.mockResolvedValue('existing-output-1'); await createOrUpdatePreconfiguredOutputs(soClient, esClient, [ { id: 'existing-output-1', - is_default: true, + is_default: false, is_default_monitoring: false, name: 'Output 1', type: 'elasticsearch', @@ -225,7 +224,6 @@ describe('output preconfiguration', () => { }, ]); - expect(mockedOutputService.delete).not.toBeCalled(); expect(mockedOutputService.create).not.toBeCalled(); expect(mockedOutputService.update).toBeCalled(); expect(spyAgentPolicyServicBumpAllAgentPoliciesForOutput).toBeCalled(); diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts index b8a639330872..a61d8316dcc5 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts @@ -9,7 +9,7 @@ import type { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/ import { isEqual } from 'lodash'; import { safeDump } from 'js-yaml'; -import type { PreconfiguredOutput, Output } from '../../../common/types'; +import type { PreconfiguredOutput, Output, NewOutput } from '../../../common/types'; import { normalizeHostsForAgents } from '../../../common/services'; import type { FleetConfigType } from '../../config'; import { DEFAULT_OUTPUT_ID, DEFAULT_OUTPUT } from '../../constants'; @@ -72,10 +72,14 @@ export async function createOrUpdatePreconfiguredOutputs( const configYaml = config ? safeDump(config) : undefined; - const data = { + const data: NewOutput = { ...outputData, - config_yaml: configYaml, is_preconfigured: true, + config_yaml: configYaml ?? null, + // Set value to null to update these fields on update + ca_sha256: outputData.ca_sha256 ?? null, + ca_trusted_fingerprint: outputData.ca_sha256 ?? null, + ssl: outputData.ssl ?? null, }; if (!data.hosts || data.hosts.length === 0) { @@ -147,16 +151,27 @@ export async function cleanPreconfiguredOutputs( } } +function isDifferent(val1: any, val2: any) { + if ( + (val1 === null || typeof val1 === 'undefined') && + (val2 === null || typeof val2 === 'undefined') + ) { + return false; + } + + return !isEqual(val1, val2); +} + function isPreconfiguredOutputDifferentFromCurrent( existingOutput: Output, preconfiguredOutput: Partial ): boolean { return ( !existingOutput.is_preconfigured || - existingOutput.is_default !== preconfiguredOutput.is_default || - existingOutput.is_default_monitoring !== preconfiguredOutput.is_default_monitoring || - existingOutput.name !== preconfiguredOutput.name || - existingOutput.type !== preconfiguredOutput.type || + isDifferent(existingOutput.is_default, preconfiguredOutput.is_default) || + isDifferent(existingOutput.is_default_monitoring, preconfiguredOutput.is_default_monitoring) || + isDifferent(existingOutput.name, preconfiguredOutput.name) || + isDifferent(existingOutput.type, preconfiguredOutput.type) || (preconfiguredOutput.hosts && !isEqual( existingOutput?.type === 'elasticsearch' @@ -166,9 +181,12 @@ function isPreconfiguredOutputDifferentFromCurrent( ? preconfiguredOutput.hosts.map(normalizeHostsForAgents) : preconfiguredOutput.hosts )) || - (preconfiguredOutput.ssl && !isEqual(preconfiguredOutput.ssl, existingOutput.ssl)) || - existingOutput.ca_sha256 !== preconfiguredOutput.ca_sha256 || - existingOutput.ca_trusted_fingerprint !== preconfiguredOutput.ca_trusted_fingerprint || - existingOutput.config_yaml !== preconfiguredOutput.config_yaml + isDifferent(preconfiguredOutput.ssl, existingOutput.ssl) || + isDifferent(existingOutput.ca_sha256, preconfiguredOutput.ca_sha256) || + isDifferent( + existingOutput.ca_trusted_fingerprint, + preconfiguredOutput.ca_trusted_fingerprint + ) || + isDifferent(existingOutput.config_yaml, preconfiguredOutput.config_yaml) ); } From a16fd1e0339083dde3e360c8e69e64ad0bd722e2 Mon Sep 17 00:00:00 2001 From: Spencer Date: Fri, 26 Aug 2022 11:09:04 -0700 Subject: [PATCH 39/50] [perf-tests/scalability] improve logging when uploading traces (#139477) * [perf-tests/scalability] improve logging when uploading traces * restore including kibana artifacts in scalability dataset * create parent dirs too * support skipping builds too --- .buildkite/pipelines/performance/daily.yml | 1 + .../scalability_dataset_extraction.sh | 35 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/.buildkite/pipelines/performance/daily.yml b/.buildkite/pipelines/performance/daily.yml index 28f58d6c814e..da9370c2f50d 100644 --- a/.buildkite/pipelines/performance/daily.yml +++ b/.buildkite/pipelines/performance/daily.yml @@ -11,6 +11,7 @@ steps: agents: queue: c2-16 key: build + if: "build.env('KIBANA_BUILD_ID') == null || build.env('KIBANA_BUILD_ID') == ''" - label: ':muscle: Performance Tests with Playwright config' command: .buildkite/scripts/steps/functional/performance_playwright.sh diff --git a/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh b/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh index 86d067174ba8..4be4a750cf38 100755 --- a/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh +++ b/.buildkite/scripts/steps/functional/scalability_dataset_extraction.sh @@ -7,8 +7,10 @@ source .buildkite/scripts/common/util.sh USER_FROM_VAULT="$(retry 5 5 vault read -field=username secret/kibana-issues/dev/apm_parser_performance)" PASS_FROM_VAULT="$(retry 5 5 vault read -field=password secret/kibana-issues/dev/apm_parser_performance)" ES_SERVER_URL="https://kibana-ops-e2e-perf.es.us-central1.gcp.cloud.es.io:9243" -BUILD_ID=${BUILDKITE_BUILD_ID} +BUILD_ID="${BUILDKITE_BUILD_ID}" GCS_BUCKET="gs://kibana-performance/scalability-tests" +OUTPUT_REL="target/scalability_tests/${BUILD_ID}" +OUTPUT_DIR="${KIBANA_DIR}/${OUTPUT_REL}" .buildkite/scripts/bootstrap.sh @@ -28,16 +30,27 @@ for i in "${scalabilityJourneys[@]}"; do --without-static-resources done -echo "--- Upload Kibana build, plugins and scalability traces to the public bucket" -mkdir "${BUILD_ID}" -# Archive json files with traces and upload as build artifacts -tar -czf "${BUILD_ID}/scalability_traces.tar.gz" -C target scalability_traces -buildkite-agent artifact upload "${BUILD_ID}/scalability_traces.tar.gz" -# Upload Kibana build, plugins, commit sha and traces to the bucket -download_artifact kibana-default.tar.gz ./"${BUILD_ID}" -download_artifact kibana-default-plugins.tar.gz ./"${BUILD_ID}" -echo "${BUILDKITE_COMMIT}" > "${BUILD_ID}/KIBANA_COMMIT_HASH" +echo "--- Creating scalability dataset in ${OUTPUT_REL}" +mkdir -p "${OUTPUT_DIR}" + +echo "--- Archiving scalability trace and uploading as build artifact" +tar -czf "${OUTPUT_DIR}/scalability_traces.tar.gz" -C target scalability_traces +buildkite-agent artifact upload "${OUTPUT_DIR}/scalability_traces.tar.gz" + +echo "--- Downloading Kibana artifacts used in tests" +download_artifact kibana-default.tar.gz "${OUTPUT_DIR}/" --build "${KIBANA_BUILD_ID:-$BUILDKITE_BUILD_ID}" +download_artifact kibana-default-plugins.tar.gz "${OUTPUT_DIR}/" --build "${KIBANA_BUILD_ID:-$BUILDKITE_BUILD_ID}" + +echo "--- Adding commit info" +echo "${BUILDKITE_COMMIT}" > "${OUTPUT_DIR}/KIBANA_COMMIT_HASH" + +echo "--- Uploading ${OUTPUT_REL} dir to ${GCS_BUCKET}" +cd "${OUTPUT_DIR}/.." gsutil -m cp -r "${BUILD_ID}" "${GCS_BUCKET}" -echo "--- Update reference to the latest CI build" +cd - + +echo "--- Promoting '${BUILD_ID}' dataset to LATEST" +cd "${OUTPUT_DIR}/.." echo "${BUILD_ID}" > LATEST gsutil cp LATEST "${GCS_BUCKET}" +cd - From 7e1b60fa22a2d763aa2b619a5c79ab27e844c6b9 Mon Sep 17 00:00:00 2001 From: Sandra G Date: Fri, 26 Aug 2022 16:09:46 -0400 Subject: [PATCH 40/50] [Infrastructure UI] inital hosts page (#138173) * inital empty hosts page and navigation item * lens table and unified search * add data view id * cleanup * clear searchs session when unmounting * cleanup * add some basic error handling for Data View * change back loading text for now because of breaking test --- x-pack/plugins/infra/kibana.json | 3 +- .../plugins/infra/public/apps/metrics_app.tsx | 1 + .../metrics/hosts/components/hosts_table.tsx | 300 ++++++++++++++++++ .../metrics/hosts/hooks/use_data_view.ts | 76 +++++ .../pages/metrics/hosts/hosts_content.tsx | 82 +++++ .../public/pages/metrics/hosts/index.tsx | 95 ++++++ .../infra/public/pages/metrics/index.tsx | 2 + x-pack/plugins/infra/public/plugin.ts | 8 + x-pack/plugins/infra/public/translations.ts | 4 + x-pack/plugins/infra/public/types.ts | 2 + 10 files changed, 572 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx create mode 100644 x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.ts create mode 100644 x-pack/plugins/infra/public/pages/metrics/hosts/hosts_content.tsx create mode 100644 x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx diff --git a/x-pack/plugins/infra/kibana.json b/x-pack/plugins/infra/kibana.json index 2226c89ab90f..4290fb0382cc 100644 --- a/x-pack/plugins/infra/kibana.json +++ b/x-pack/plugins/infra/kibana.json @@ -15,7 +15,8 @@ "triggersActionsUi", "observability", "ruleRegistry", - "unifiedSearch" + "unifiedSearch", + "lens" ], "optionalPlugins": ["ml", "home", "embeddable", "osquery"], "server": true, diff --git a/x-pack/plugins/infra/public/apps/metrics_app.tsx b/x-pack/plugins/infra/public/apps/metrics_app.tsx index 2fe724e0cfb1..fdeb7173d5ce 100644 --- a/x-pack/plugins/infra/public/apps/metrics_app.tsx +++ b/x-pack/plugins/infra/public/apps/metrics_app.tsx @@ -46,6 +46,7 @@ export const renderApp = ( return () => { ReactDOM.unmountComponentAtNode(element); + plugins.data.search.session.clear(); }; }; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx new file mode 100644 index 000000000000..9975de8db737 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx @@ -0,0 +1,300 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; +import type { Query, TimeRange } from '@kbn/es-query'; +import React from 'react'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { InfraClientStartDeps } from '../../../../types'; + +const getLensHostsTable = ( + metricsDataView: DataView, + query: Query +): TypedLensByValueInput['attributes'] => + ({ + visualizationType: 'lnsDatatable', + title: 'Lens visualization', + references: [ + { + id: metricsDataView.id, + name: 'indexpattern-datasource-current-indexpattern', + type: 'index-pattern', + }, + { + id: metricsDataView.id, + name: 'indexpattern-datasource-layer-cbe5d8a0-381d-49bf-b8ac-f8f312ec7129', + type: 'index-pattern', + }, + ], + state: { + datasourceStates: { + indexpattern: { + layers: { + 'cbe5d8a0-381d-49bf-b8ac-f8f312ec7129': { + columns: { + '8d17458d-31af-41d1-a23c-5180fd960bee': { + label: 'Name', + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField: 'host.name', + isBucketed: true, + params: { + size: 10000, + orderBy: { + type: 'column', + columnId: '467de550-9186-4e18-8cfa-bce07087801a', + }, + orderDirection: 'desc', + otherBucket: true, + missingBucket: false, + parentFormat: { + id: 'terms', + }, + }, + customLabel: true, + }, + '155fc728-d010-498e-8126-0bc46cad2be2': { + label: 'Operating system', + dataType: 'string', + operationType: 'terms', + scale: 'ordinal', + sourceField: 'host.os.name', + isBucketed: true, + params: { + size: 10000, + orderBy: { + type: 'column', + columnId: '467de550-9186-4e18-8cfa-bce07087801a', + }, + orderDirection: 'desc', + otherBucket: false, + missingBucket: false, + parentFormat: { + id: 'terms', + }, + }, + customLabel: true, + }, + '467de550-9186-4e18-8cfa-bce07087801a': { + label: '# of CPUs', + dataType: 'number', + operationType: 'max', + sourceField: 'system.cpu.cores', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: true, + }, + customLabel: true, + }, + '0a9bd0fa-9966-489b-8c95-70997a7aad4cX0': { + label: 'Part of Memory Total (avg)', + dataType: 'number', + operationType: 'average', + sourceField: 'system.memory.total', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: false, + }, + customLabel: true, + }, + '0a9bd0fa-9966-489b-8c95-70997a7aad4c': { + label: 'Memory total (avg.)', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + formula: 'average(system.memory.total)', + isFormulaBroken: false, + format: { + id: 'bytes', + params: { + decimals: 0, + }, + }, + }, + references: ['0a9bd0fa-9966-489b-8c95-70997a7aad4cX0'], + customLabel: true, + }, + 'fe5a4d7d-6f48-45ab-974c-96bc864ac36fX0': { + label: 'Part of Memory Usage (avg)', + dataType: 'number', + operationType: 'average', + sourceField: 'system.memory.used.pct', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: false, + }, + customLabel: true, + }, + 'fe5a4d7d-6f48-45ab-974c-96bc864ac36f': { + label: 'Memory usage (avg.)', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + formula: 'average(system.memory.used.pct)', + isFormulaBroken: false, + format: { + id: 'percent', + params: { + decimals: 0, + }, + }, + }, + references: ['fe5a4d7d-6f48-45ab-974c-96bc864ac36fX0'], + customLabel: true, + }, + '3eca2307-228e-4842-a023-57e15c8c364dX0': { + label: 'Part of Disk Latency (avg ms)', + dataType: 'number', + operationType: 'average', + sourceField: 'system.diskio.io.time', + isBucketed: false, + scale: 'ratio', + params: { + emptyAsNull: false, + }, + customLabel: true, + }, + '3eca2307-228e-4842-a023-57e15c8c364dX1': { + label: 'Part of Disk Latency (avg ms)', + dataType: 'number', + operationType: 'math', + isBucketed: false, + scale: 'ratio', + params: { + tinymathAst: { + type: 'function', + name: 'divide', + args: ['3eca2307-228e-4842-a023-57e15c8c364dX0', 1000], + location: { + min: 0, + max: 37, + }, + text: 'average(system.diskio.io.time) / 1000', + }, + }, + references: ['3eca2307-228e-4842-a023-57e15c8c364dX0'], + customLabel: true, + }, + '3eca2307-228e-4842-a023-57e15c8c364d': { + label: 'Disk latency (avg.)', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + formula: 'average(system.diskio.io.time) / 1000', + isFormulaBroken: false, + format: { + id: 'number', + params: { + decimals: 0, + suffix: 'ms', + }, + }, + }, + references: ['3eca2307-228e-4842-a023-57e15c8c364dX1'], + customLabel: true, + }, + }, + columnOrder: [ + '8d17458d-31af-41d1-a23c-5180fd960bee', + '155fc728-d010-498e-8126-0bc46cad2be2', + '467de550-9186-4e18-8cfa-bce07087801a', + '3eca2307-228e-4842-a023-57e15c8c364d', + '0a9bd0fa-9966-489b-8c95-70997a7aad4c', + 'fe5a4d7d-6f48-45ab-974c-96bc864ac36f', + '0a9bd0fa-9966-489b-8c95-70997a7aad4cX0', + 'fe5a4d7d-6f48-45ab-974c-96bc864ac36fX0', + '3eca2307-228e-4842-a023-57e15c8c364dX0', + '3eca2307-228e-4842-a023-57e15c8c364dX1', + ], + incompleteColumns: {}, + indexPatternId: '305688db-9e02-4046-acc1-5d0d8dd73ef6', + }, + }, + }, + }, + visualization: { + layerId: 'cbe5d8a0-381d-49bf-b8ac-f8f312ec7129', + layerType: 'data', + columns: [ + { + columnId: '8d17458d-31af-41d1-a23c-5180fd960bee', + width: 296.16666666666663, + }, + { + columnId: '155fc728-d010-498e-8126-0bc46cad2be2', + isTransposed: false, + width: 152.36666666666667, + }, + { + columnId: '467de550-9186-4e18-8cfa-bce07087801a', + isTransposed: false, + width: 121.11666666666667, + }, + { + columnId: '0a9bd0fa-9966-489b-8c95-70997a7aad4c', + isTransposed: false, + }, + { + columnId: 'fe5a4d7d-6f48-45ab-974c-96bc864ac36f', + isTransposed: false, + }, + { + columnId: '3eca2307-228e-4842-a023-57e15c8c364d', + isTransposed: false, + }, + ], + paging: { + size: 10, + enabled: true, + }, + headerRowHeight: 'custom', + headerRowHeightLines: 2, + rowHeight: 'single', + rowHeightLines: 1, + }, + filters: [], + query, + }, + } as TypedLensByValueInput['attributes']); + +interface Props { + dataView: DataView; + timeRange: TimeRange; + query: Query; + searchSessionId: string; +} +export const HostsTable: React.FunctionComponent = ({ + dataView, + timeRange, + query, + searchSessionId, +}) => { + const { + services: { lens }, + } = useKibana(); + const LensComponent = lens?.EmbeddableComponent; + + return ( + + ); +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.ts new file mode 100644 index 000000000000..b60b2aa89db6 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback, useState, useEffect } from 'react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import createContainer from 'constate'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { InfraClientStartDeps } from '../../../../types'; +import { useTrackedPromise } from '../../../../utils/use_tracked_promise'; + +export const useDataView = ({ metricAlias }: { metricAlias: string }) => { + const [metricsDataView, setMetricsDataView] = useState(); + const { + services: { dataViews }, + } = useKibana(); + + const [createDataViewRequest, createDataView] = useTrackedPromise( + { + createPromise: (config): Promise => { + return dataViews.createAndSave(config); + }, + onResolve: (response: DataView) => { + setMetricsDataView(response); + }, + cancelPreviousOn: 'creation', + }, + [] + ); + + const [getDataViewRequest, getDataView] = useTrackedPromise( + { + createPromise: (indexPattern: string): Promise => { + return dataViews.find(metricAlias, 1); + }, + onResolve: (response: DataView[]) => { + setMetricsDataView(response[0]); + }, + cancelPreviousOn: 'creation', + }, + [] + ); + + const loadDataView = useCallback(async () => { + try { + let view = (await getDataView(metricAlias))[0]; + if (!view) { + view = await createDataView({ + title: metricAlias, + timeFieldName: '@timestamp', + }); + } + } catch (error) { + setMetricsDataView(undefined); + } + }, [metricAlias, createDataView, getDataView]); + + const hasFailedFetchingDataView = getDataViewRequest.state === 'rejected'; + const hasFailedCreatingDataView = createDataViewRequest.state === 'rejected'; + + useEffect(() => { + loadDataView(); + }, [metricAlias, loadDataView]); + + return { + metricsDataView, + hasFailedCreatingDataView, + hasFailedFetchingDataView, + }; +}; + +export const MetricsDataView = createContainer(useDataView); +export const [MetricsDataViewProvider, useMetricsDataViewContext] = MetricsDataView; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hosts_content.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/hosts_content.tsx new file mode 100644 index 000000000000..63e95a19f1c7 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hosts_content.tsx @@ -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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Query, TimeRange } from '@kbn/es-query'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { i18n } from '@kbn/i18n'; +import React, { useState, useCallback } from 'react'; +import { SearchBar } from '@kbn/unified-search-plugin/public'; +import { InfraLoadingPanel } from '../../../components/loading'; +import { useMetricsDataViewContext } from './hooks/use_data_view'; +import { HostsTable } from './components/hosts_table'; +import { InfraClientStartDeps } from '../../../types'; +import { useSourceContext } from '../../../containers/metrics_source'; + +export const HostsContent: React.FunctionComponent = () => { + const { + services: { data }, + } = useKibana(); + const { source } = useSourceContext(); + const [dateRange, setDateRange] = useState({ from: 'now-15m', to: 'now' }); + const [query, setQuery] = useState({ query: '', language: 'kuery' }); + const { metricsDataView, hasFailedCreatingDataView, hasFailedFetchingDataView } = + useMetricsDataViewContext(); + // needed to refresh the lens table when filters havent changed + const [searchSessionId, setSearchSessionId] = useState(data.search.session.start()); + + const onQuerySubmit = useCallback( + (payload: { dateRange: TimeRange; query?: Query }) => { + setDateRange(payload.dateRange); + if (payload.query) { + setQuery(payload.query); + } + setSearchSessionId(data.search.session.start()); + }, + [setDateRange, setQuery, data.search.session] + ); + + return ( +
+ {metricsDataView ? ( + <> + + + + ) : hasFailedCreatingDataView || hasFailedFetchingDataView ? ( +
+
There was an error trying to load or create the Data View:
+ {source?.configuration.metricAlias} +
+ ) : ( + + )} +
+ ); +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx new file mode 100644 index 000000000000..17d1e23a561f --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/index.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiErrorBoundary } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { euiStyled } from '@kbn/kibana-react-plugin/common'; +import React from 'react'; +import { useTrackPageview } from '@kbn/observability-plugin/public'; +import { APP_WRAPPER_CLASS } from '@kbn/core/public'; + +import { DocumentTitle } from '../../../components/document_title'; + +import { SourceErrorPage } from '../../../components/source_error_page'; +import { SourceLoadingPage } from '../../../components/source_loading_page'; +import { useSourceContext } from '../../../containers/metrics_source'; +import { useMetricsBreadcrumbs } from '../../../hooks/use_metrics_breadcrumbs'; +import { MetricsPageTemplate } from '../page_template'; +import { hostsTitle } from '../../../translations'; +import { HostsContent } from './hosts_content'; +import { MetricsDataViewProvider } from './hooks/use_data_view'; + +export const HostsPage = () => { + const { + hasFailedLoadingSource, + isLoading, + loadSourceFailureMessage, + loadSource, + source, + metricIndicesExist, + } = useSourceContext(); + useTrackPageview({ app: 'infra_metrics', path: 'hosts' }); + useTrackPageview({ app: 'infra_metrics', path: 'hosts', delay: 15000 }); + + useMetricsBreadcrumbs([ + { + text: hostsTitle, + }, + ]); + return ( + + + i18n.translate('xpack.infra.infrastructureHostsPage.documentTitle', { + defaultMessage: '{previousTitle} | Hosts', + values: { + previousTitle, + }, + }) + } + /> + {isLoading && !source ? ( + + ) : metricIndicesExist && source ? ( + <> + + + + + + + + + ) : hasFailedLoadingSource ? ( + + ) : ( + + )} + + ); +}; + +// This is added to facilitate a full height layout whereby the +// inner container will set it's own height and be scrollable. +// The "fullHeight" prop won't help us as it only applies to certain breakpoints. +const HostsPageWrapper = euiStyled.div` + .euiPage .euiPageContentBody { + display: flex; + flex-direction: column; + flex: 1 0 auto; + width: 100%; + height: 100%; + } +`; diff --git a/x-pack/plugins/infra/public/pages/metrics/index.tsx b/x-pack/plugins/infra/public/pages/metrics/index.tsx index e2f4705f17b7..9c02424aac94 100644 --- a/x-pack/plugins/infra/public/pages/metrics/index.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/index.tsx @@ -30,6 +30,7 @@ import { MetricsExplorerPage } from './metrics_explorer'; import { SnapshotPage } from './inventory_view'; import { MetricDetail } from './metric_detail'; import { MetricsSettingsPage } from './settings'; +import { HostsPage } from './hosts'; import { SourceLoadingPage } from '../../components/source_loading_page'; import { WaffleOptionsProvider } from './inventory_view/hooks/use_waffle_options'; import { WaffleTimeProvider } from './inventory_view/hooks/use_waffle_time'; @@ -126,6 +127,7 @@ export const InfrastructurePage = ({ match }: RouteComponentProps) => { )} /> + diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts index 724b1b1f01d9..f02ffcb5167f 100644 --- a/x-pack/plugins/infra/public/plugin.ts +++ b/x-pack/plugins/infra/public/plugin.ts @@ -101,6 +101,7 @@ export class Plugin implements InfraClientPluginClass { label: 'Infrastructure', sortKey: 300, entries: [ + { label: 'Hosts', app: 'metrics', path: '/hosts' }, { label: 'Inventory', app: 'metrics', path: '/inventory' }, { label: 'Metrics Explorer', app: 'metrics', path: '/explorer' }, ], @@ -191,6 +192,13 @@ export class Plugin implements InfraClientPluginClass { }), path: '/explorer', }, + { + id: 'metrics-hosts', + title: i18n.translate('xpack.infra.homePage.metricsHostsTabTitle', { + defaultMessage: 'Hosts', + }), + path: '/hosts', + }, { id: 'settings', title: i18n.translate('xpack.infra.homePage.settingsTabTitle', { diff --git a/x-pack/plugins/infra/public/translations.ts b/x-pack/plugins/infra/public/translations.ts index 1acec39d0762..cbc46dce3827 100644 --- a/x-pack/plugins/infra/public/translations.ts +++ b/x-pack/plugins/infra/public/translations.ts @@ -45,3 +45,7 @@ export const inventoryTitle = i18n.translate('xpack.infra.metrics.inventoryPageT export const metricsExplorerTitle = i18n.translate('xpack.infra.metrics.metricsExplorerTitle', { defaultMessage: 'Metrics Explorer', }); + +export const hostsTitle = i18n.translate('xpack.infra.metrics.hostsTitle', { + defaultMessage: 'Hosts', +}); diff --git a/x-pack/plugins/infra/public/types.ts b/x-pack/plugins/infra/public/types.ts index fcd806eb34ff..a87d7def58e6 100644 --- a/x-pack/plugins/infra/public/types.ts +++ b/x-pack/plugins/infra/public/types.ts @@ -28,6 +28,7 @@ import type { } from '@kbn/observability-plugin/public'; // import type { OsqueryPluginStart } from '../../osquery/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; +import type { LensPublicStart } from '@kbn/lens-plugin/public'; import { UnwrapPromise } from '../common/utility_types'; import type { SourceProviderProps, @@ -73,6 +74,7 @@ export interface InfraClientStartDeps { embeddable?: EmbeddableStart; osquery?: unknown; // OsqueryPluginStart; share: SharePluginStart; + lens: LensPublicStart; } export type InfraClientCoreSetup = CoreSetup; From 5e70e10abec31ed0ebdf346bdea7e9a234d1af56 Mon Sep 17 00:00:00 2001 From: Paulo Henrique Date: Fri, 26 Aug 2022 13:32:00 -0700 Subject: [PATCH 41/50] [8.5][Kubernetes Security] Improving type schema (#138470) --- .../breadcrumb/index.test.tsx | 92 +++++++------------ .../tree_view_container/breadcrumb/index.tsx | 62 ++++++------- .../dynamic_tree_view/index.tsx | 11 +-- .../dynamic_tree_view/types.ts | 6 +- .../components/tree_view_container/helpers.ts | 48 +++++----- .../components/tree_view_container/hooks.tsx | 8 +- .../tree_view_container/tree_nav/constants.ts | 14 +-- .../tree_view_container/tree_nav/index.tsx | 5 +- .../kubernetes_security/public/types.ts | 24 ++--- 9 files changed, 116 insertions(+), 154 deletions(-) diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx index 82eedbaf1065..1384fc52eeb6 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.test.tsx @@ -7,16 +7,16 @@ import React from 'react'; import { AppContextTestRender, createAppRootMockRenderer } from '../../../test'; -import { KubernetesCollection, TreeNavSelection } from '../../../types'; +import { KubernetesCollectionMap } from '../../../types'; import { Breadcrumb } from '.'; -const MOCK_TREE_SELECTION: TreeNavSelection = { - [KubernetesCollection.clusterId]: 'selected cluster id', - [KubernetesCollection.clusterName]: 'selected cluster name', - [KubernetesCollection.namespace]: 'selected namespace', - [KubernetesCollection.node]: 'selected node', - [KubernetesCollection.pod]: 'selected pod', - [KubernetesCollection.containerImage]: 'selected image', +const MOCK_TREE_SELECTION: KubernetesCollectionMap = { + clusterId: 'selected cluster id', + clusterName: 'selected cluster name', + namespace: 'selected namespace', + node: 'selected node', + pod: 'selected pod', + containerImage: 'selected image', }; describe('Tree view Breadcrumb component', () => { @@ -34,24 +34,16 @@ describe('Tree view Breadcrumb component', () => { it('renders Breadcrumb correctly', async () => { renderResult = mockedContext.render( ); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.clusterName]!) - ).toBeVisible(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.namespace]!) - ).toBeVisible(); - expect(renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.node]!)).toBeFalsy(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.pod]!) - ).toBeVisible(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.containerImage]!) - ).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.clusterName!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.namespace!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.node!)).toBeFalsy(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.pod!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.containerImage!)).toBeVisible(); expect(renderResult).toMatchSnapshot(); }); @@ -66,33 +58,25 @@ describe('Tree view Breadcrumb component', () => { ); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.clusterId]!) - ).toBeVisible(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.namespace]!) - ).toBeVisible(); - expect(renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.node]!)).toBeFalsy(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.pod]!) - ).toBeVisible(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.containerImage]!) - ).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.clusterId!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.namespace!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.node!)).toBeFalsy(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.pod!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.containerImage!)).toBeVisible(); expect(renderResult).toMatchSnapshot(); }); it('returns null when no cluster in selection', async () => { renderResult = mockedContext.render( ); @@ -103,12 +87,12 @@ describe('Tree view Breadcrumb component', () => { it('clicking on breadcrumb item triggers onSelect', async () => { renderResult = mockedContext.render( ); - renderResult.getByText(MOCK_TREE_SELECTION[KubernetesCollection.clusterName]!).click(); + renderResult.getByText(MOCK_TREE_SELECTION.clusterName!).click(); expect(onSelect).toHaveBeenCalledTimes(1); }); @@ -116,30 +100,20 @@ describe('Tree view Breadcrumb component', () => { renderResult = mockedContext.render( ); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.clusterName]!) - ).toBeVisible(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.namespace]!) - ).toBeFalsy(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.node]!) - ).toBeVisible(); - expect(renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.pod]!)).toBeFalsy(); - expect( - renderResult.queryByText(MOCK_TREE_SELECTION[KubernetesCollection.containerImage]!) - ).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.clusterName!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.namespace!)).toBeFalsy(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.node!)).toBeVisible(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.pod!)).toBeFalsy(); + expect(renderResult.queryByText(MOCK_TREE_SELECTION.containerImage!)).toBeVisible(); expect(renderResult).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx index 1089ee11e98c..dc01bf68e87c 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/breadcrumb/index.tsx @@ -7,38 +7,38 @@ import React, { useCallback } from 'react'; import { EuiButtonEmpty, EuiIcon, EuiToolTip } from '@elastic/eui'; -import { TreeNavSelection, KubernetesCollection } from '../../../types'; +import { KubernetesCollectionMap, KubernetesCollection } from '../../../types'; import { useStyles } from './styles'; import { TreeViewIcon } from '../tree_view_icon'; import { KUBERNETES_COLLECTION_ICONS_PROPS } from '../helpers'; interface BreadcrumbDeps { - treeNavSelection: TreeNavSelection; - onSelect: (selection: TreeNavSelection) => void; + treeNavSelection: Partial; + onSelect: (selection: Partial) => void; } export const Breadcrumb = ({ treeNavSelection, onSelect }: BreadcrumbDeps) => { const styles = useStyles(); const onBreadCrumbClick = useCallback( - (collectionType: string) => { + (collectionType: KubernetesCollection) => { const selectionCopy = { ...treeNavSelection }; switch (collectionType) { - case KubernetesCollection.clusterId: { + case 'clusterId': { onSelect({ - [KubernetesCollection.clusterId]: treeNavSelection[KubernetesCollection.clusterId], - [KubernetesCollection.clusterName]: treeNavSelection[KubernetesCollection.clusterName], + clusterId: treeNavSelection.clusterId, + clusterName: treeNavSelection.clusterName, }); break; } - case KubernetesCollection.namespace: - case KubernetesCollection.node: { - delete selectionCopy[KubernetesCollection.pod]; - delete selectionCopy[KubernetesCollection.containerImage]; + case 'namespace': + case 'node': { + delete selectionCopy.pod; + delete selectionCopy.containerImage; onSelect(selectionCopy); break; } - case KubernetesCollection.pod: { - delete selectionCopy[KubernetesCollection.containerImage]; + case 'pod': { + delete selectionCopy.containerImage; onSelect(selectionCopy); break; } @@ -55,9 +55,8 @@ export const Breadcrumb = ({ treeNavSelection, onSelect }: BreadcrumbDeps) => { hasRightArrow: boolean = true ) => { const content = - collectionType === KubernetesCollection.clusterId - ? treeNavSelection[KubernetesCollection.clusterName] || - treeNavSelection[KubernetesCollection.clusterId] + collectionType === 'clusterId' + ? treeNavSelection.clusterName || treeNavSelection.clusterId : treeNavSelection[collectionType]; return ( @@ -85,42 +84,39 @@ export const Breadcrumb = ({ treeNavSelection, onSelect }: BreadcrumbDeps) => { ] ); - if (!treeNavSelection[KubernetesCollection.clusterId]) { + if (!treeNavSelection.clusterId) { return null; } return (
{renderBreadcrumbLink( - KubernetesCollection.clusterId, + 'clusterId', , - !( - treeNavSelection[KubernetesCollection.namespace] || - treeNavSelection[KubernetesCollection.node] - ), + !(treeNavSelection.namespace || treeNavSelection.node), false )} - {treeNavSelection[KubernetesCollection.namespace] && + {treeNavSelection.namespace && renderBreadcrumbLink( - KubernetesCollection.namespace, + 'namespace', , - !treeNavSelection[KubernetesCollection.pod] + !treeNavSelection.pod )} - {treeNavSelection[KubernetesCollection.node] && + {treeNavSelection.node && renderBreadcrumbLink( - KubernetesCollection.node, + 'node', , - !treeNavSelection[KubernetesCollection.pod] + !treeNavSelection.pod )} - {treeNavSelection[KubernetesCollection.pod] && + {treeNavSelection.pod && renderBreadcrumbLink( - KubernetesCollection.pod, + 'pod', , - !treeNavSelection[KubernetesCollection.containerImage] + !treeNavSelection.containerImage )} - {treeNavSelection[KubernetesCollection.containerImage] && + {treeNavSelection.containerImage && renderBreadcrumbLink( - KubernetesCollection.containerImage, + 'containerImage', , true )} diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx index 05a471a596a7..854693195d9c 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/index.tsx @@ -16,7 +16,6 @@ import { EuiLoadingSpinner, EuiToolTip, } from '@elastic/eui'; -import { KubernetesCollection } from '../../../types'; import { TREE_NAVIGATION_LOADING, TREE_NAVIGATION_SHOW_MORE, @@ -230,7 +229,7 @@ const DynamicTreeViewItem = ({ const buttonRef = useRef>({}); const handleSelect = () => { - if (tree[depth].type === KubernetesCollection.clusterId) { + if (tree[depth].type === 'clusterId') { onSelect(selectionDepth, tree[depth].type, aggData.key, aggData.key_as_string); } else { onSelect(selectionDepth, tree[depth].type, aggData.key); @@ -300,9 +299,9 @@ const DynamicTreeViewItem = ({ Object.entries({ ...selectionDepth, [tree[depth].type]: aggData.key, - ...(tree[depth].type === KubernetesCollection.clusterId && + ...(tree[depth].type === 'clusterId' && aggData.key_as_string && { - [KubernetesCollection.clusterName]: aggData.key_as_string, + clusterName: aggData.key_as_string, }), }) .map(([k, v]) => `${k}.${v}`) @@ -348,8 +347,8 @@ const DynamicTreeViewItem = ({ selectionDepth={{ ...selectionDepth, [tree[depth].type]: aggData.key, - ...(tree[depth].type === KubernetesCollection.clusterId && { - [KubernetesCollection.clusterName]: aggData.key_as_string, + ...(tree[depth].type === 'clusterId' && { + clusterName: aggData.key_as_string, }), }} tree={tree} diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts index 1c3186e8e1de..dfc51b72516a 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/dynamic_tree_view/types.ts @@ -5,15 +5,15 @@ * 2.0. */ -import { QueryDslQueryContainerBool, TreeNavSelection, DynamicTree } from '../../../types'; +import { QueryDslQueryContainerBool, KubernetesCollectionMap, DynamicTree } from '../../../types'; export type DynamicTreeViewProps = { tree: DynamicTree[]; depth?: number; - selectionDepth?: TreeNavSelection; + selectionDepth?: Partial; query: QueryDslQueryContainerBool; onSelect: ( - selectionDepth: TreeNavSelection, + selectionDepth: Partial, type: string, key: string | number, clusterName?: string diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts index 18d95dc0c9d9..b24ff3c97fcb 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/helpers.ts @@ -14,33 +14,34 @@ import { ORCHESTRATOR_NAMESPACE, ORCHESTRATOR_RESOURCE_ID, } from '../../../common/constants'; -import { - KubernetesCollection, +import type { QueryDslQueryContainerBool, - TreeNavSelection, + KubernetesCollectionMap, + KubernetesCollection, TreeViewIconProps, } from '../../types'; -export const KUBERNETES_COLLECTION_FIELDS = { - [KubernetesCollection.clusterId]: ORCHESTRATOR_CLUSTER_ID, - [KubernetesCollection.clusterName]: ORCHESTRATOR_CLUSTER_NAME, - [KubernetesCollection.namespace]: ORCHESTRATOR_NAMESPACE, - [KubernetesCollection.node]: CLOUD_INSTANCE_NAME, - [KubernetesCollection.pod]: ORCHESTRATOR_RESOURCE_ID, - [KubernetesCollection.containerImage]: CONTAINER_IMAGE_NAME, +export const KUBERNETES_COLLECTION_FIELDS: KubernetesCollectionMap = { + clusterId: ORCHESTRATOR_CLUSTER_ID, + clusterName: ORCHESTRATOR_CLUSTER_NAME, + namespace: ORCHESTRATOR_NAMESPACE, + node: CLOUD_INSTANCE_NAME, + pod: ORCHESTRATOR_RESOURCE_ID, + containerImage: CONTAINER_IMAGE_NAME, }; -export const KUBERNETES_COLLECTION_ICONS_PROPS: { [key: string]: TreeViewIconProps } = { - [KubernetesCollection.clusterId]: { type: 'cluster', euiVarColor: 'euiColorVis0' }, - [KubernetesCollection.namespace]: { type: 'namespace', euiVarColor: 'euiColorVis1' }, - [KubernetesCollection.node]: { type: 'kubernetesNode', euiVarColor: 'euiColorVis3' }, - [KubernetesCollection.pod]: { type: 'kubernetesPod', euiVarColor: 'euiColorVis9' }, - [KubernetesCollection.containerImage]: { type: 'container', euiVarColor: 'euiColorVis8' }, +export const KUBERNETES_COLLECTION_ICONS_PROPS: KubernetesCollectionMap = { + clusterId: { type: 'cluster', euiVarColor: 'euiColorVis0' }, + clusterName: { type: 'cluster', euiVarColor: 'euiColorVis0' }, + namespace: { type: 'namespace', euiVarColor: 'euiColorVis1' }, + node: { type: 'kubernetesNode', euiVarColor: 'euiColorVis3' }, + pod: { type: 'kubernetesPod', euiVarColor: 'euiColorVis9' }, + containerImage: { type: 'container', euiVarColor: 'euiColorVis8' }, }; export const addTreeNavSelectionToFilterQuery = ( filterQuery: string | undefined, - treeNavSelection: TreeNavSelection + treeNavSelection: Partial ) => { let validFilterQuery = DEFAULT_QUERY; @@ -49,17 +50,19 @@ export const addTreeNavSelectionToFilterQuery = ( if (!(parsedFilterQuery?.bool?.filter && Array.isArray(parsedFilterQuery.bool.filter))) { throw new Error('Invalid filter query'); } + parsedFilterQuery.bool.filter.push( - ...Object.keys(treeNavSelection) - .filter((key) => key !== KubernetesCollection.clusterName) - .map((collectionKey) => { - const collection = collectionKey as KubernetesCollection; + ...Object.entries(treeNavSelection) + .filter(([key]) => (key as KubernetesCollection) !== 'clusterName') + .map((obj) => { + const [key, value] = obj as [KubernetesCollection, string]; + return { bool: { should: [ { match: { - [KUBERNETES_COLLECTION_FIELDS[collection]]: treeNavSelection[collection], + [KUBERNETES_COLLECTION_FIELDS[key]]: value, }, }, ], @@ -67,6 +70,7 @@ export const addTreeNavSelectionToFilterQuery = ( }; }) ); + validFilterQuery = JSON.stringify(parsedFilterQuery); } catch { // no-op since validFilterQuery is initialized to be DEFAULT_QUERY diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx index 7d322fadd8dc..9c9f586791f5 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/hooks.tsx @@ -6,7 +6,7 @@ */ import { useCallback, useEffect, useMemo, useState } from 'react'; -import { KubernetesCollection, TreeNavSelection } from '../../types'; +import type { KubernetesCollectionMap } from '../../types'; import { addTimerangeAndDefaultFilterToQuery } from '../../utils/add_timerange_and_default_filter_to_query'; import { addTreeNavSelectionToFilterQuery } from './helpers'; import { IndexPattern, GlobalFilter } from '../../types'; @@ -18,7 +18,7 @@ export type UseTreeViewProps = { export const useTreeView = ({ globalFilter, indexPattern }: UseTreeViewProps) => { const [noResults, setNoResults] = useState(false); - const [treeNavSelection, setTreeNavSelection] = useState({}); + const [treeNavSelection, setTreeNavSelection] = useState>({}); const [hasSelection, setHasSelection] = useState(false); const filterQueryWithTimeRange = useMemo(() => { @@ -31,7 +31,7 @@ export const useTreeView = ({ globalFilter, indexPattern }: UseTreeViewProps) => ); }, [globalFilter.filterQuery, globalFilter.startDate, globalFilter.endDate]); - const onTreeNavSelect = useCallback((selection: TreeNavSelection) => { + const onTreeNavSelect = useCallback((selection: Partial) => { setHasSelection(false); setTreeNavSelection(selection); }, []); @@ -48,7 +48,7 @@ export const useTreeView = ({ globalFilter, indexPattern }: UseTreeViewProps) => }, [filterQueryWithTimeRange]); useEffect(() => { - if (!!treeNavSelection[KubernetesCollection.clusterId]) { + if (!!treeNavSelection.clusterId) { setHasSelection(true); setTreeNavSelection(treeNavSelection); } diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts index eb5e7ccd0065..c1b43bed1fd4 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/constants.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { KubernetesCollection, DynamicTree } from '../../../types'; +import type { DynamicTree } from '../../../types'; import { KUBERNETES_COLLECTION_FIELDS, KUBERNETES_COLLECTION_ICONS_PROPS } from '../helpers'; import { translations } from './translations'; @@ -13,39 +13,39 @@ const LOGICAL_TREE_VIEW: DynamicTree[] = [ { key: KUBERNETES_COLLECTION_FIELDS.clusterId, iconProps: KUBERNETES_COLLECTION_ICONS_PROPS.clusterId, - type: KubernetesCollection.clusterId, + type: 'clusterId', name: translations.cluster(), namePlural: translations.cluster(true), }, { key: KUBERNETES_COLLECTION_FIELDS.namespace, iconProps: KUBERNETES_COLLECTION_ICONS_PROPS.namespace, - type: KubernetesCollection.namespace, + type: 'namespace', name: translations.namespace(), namePlural: translations.namespace(true), }, { key: KUBERNETES_COLLECTION_FIELDS.pod, iconProps: KUBERNETES_COLLECTION_ICONS_PROPS.pod, - type: KubernetesCollection.pod, + type: 'pod', name: translations.pod(), namePlural: translations.pod(true), }, { key: KUBERNETES_COLLECTION_FIELDS.containerImage, iconProps: KUBERNETES_COLLECTION_ICONS_PROPS.containerImage, - type: KubernetesCollection.containerImage, + type: 'containerImage', name: translations.containerImage(), namePlural: translations.containerImage(true), }, ]; -const INFRASTRUCTURE_TREE_VIEW = LOGICAL_TREE_VIEW.map((tree, index) => { +const INFRASTRUCTURE_TREE_VIEW: DynamicTree[] = LOGICAL_TREE_VIEW.map((tree, index) => { if (index === 1) { return { key: KUBERNETES_COLLECTION_FIELDS.node, iconProps: KUBERNETES_COLLECTION_ICONS_PROPS.node, - type: KubernetesCollection.node, + type: 'node', name: translations.node(), namePlural: translations.node(true), }; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx index 1dc74fadbc4f..202563b776a6 100644 --- a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/tree_nav/index.tsx @@ -15,7 +15,6 @@ import { EuiFlexItem, EuiToolTip, } from '@elastic/eui'; -import { KubernetesCollection } from '../../../types'; import { TREE_VIEW_INFRASTRUCTURE_VIEW, TREE_VIEW_LOGICAL_VIEW, @@ -122,9 +121,7 @@ export const TreeNav = () => { const newSelectionDepth = { ...selectionDepth, [type]: key, - ...(clusterName && { - [KubernetesCollection.clusterName]: clusterName, - }), + ...(clusterName && { clusterName }), }; setSelected( Object.entries(newSelectionDepth) diff --git a/x-pack/plugins/kubernetes_security/public/types.ts b/x-pack/plugins/kubernetes_security/public/types.ts index dafeea490d7a..70db5ae1d58f 100644 --- a/x-pack/plugins/kubernetes_security/public/types.ts +++ b/x-pack/plugins/kubernetes_security/public/types.ts @@ -48,23 +48,15 @@ export type QueryDslQueryContainerBool = { bool: BoolQuery; }; -export enum KubernetesCollection { - clusterId = 'clusterId', - clusterName = 'clusterName', - namespace = 'namespace', - node = 'node', - pod = 'pod', - containerImage = 'containerImage', -} +export type KubernetesCollection = + | 'clusterId' + | 'clusterName' + | 'namespace' + | 'node' + | 'pod' + | 'containerImage'; -export interface TreeNavSelection { - [KubernetesCollection.clusterId]?: string; - [KubernetesCollection.clusterName]?: string; - [KubernetesCollection.namespace]?: string; - [KubernetesCollection.node]?: string; - [KubernetesCollection.pod]?: string; - [KubernetesCollection.containerImage]?: string; -} +export type KubernetesCollectionMap = Record; export type TreeViewIconProps = { euiVarColor: keyof EuiVarsColors; From 659d664f01dbd74964f102c900beed02ffaabf6a Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Fri, 26 Aug 2022 13:45:41 -0700 Subject: [PATCH 42/50] [DOCS] Update snooze and disable rules screenshots (#138693) --- .../alerting/create-and-manage-rules.asciidoc | 16 +++++++++------- .../images/individual-enable-disable.png | Bin 0 -> 152497 bytes .../images/individual-snooze-disable.png | Bin 263261 -> 0 bytes docs/user/alerting/images/snooze-panel.png | Bin 101143 -> 123538 bytes 4 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 docs/user/alerting/images/individual-enable-disable.png delete mode 100644 docs/user/alerting/images/individual-snooze-disable.png diff --git a/docs/user/alerting/create-and-manage-rules.asciidoc b/docs/user/alerting/create-and-manage-rules.asciidoc index 52db2ed51217..2f03ce6e55ef 100644 --- a/docs/user/alerting/create-and-manage-rules.asciidoc +++ b/docs/user/alerting/create-and-manage-rules.asciidoc @@ -142,19 +142,21 @@ Actions are not required on rules. You can run a rule without actions to underst [[controlling-rules]] === Snooze and disable rules -The rule listing enables you to quickly snooze, disable or enable, and delete individual rules using the colored dropdown. +The rule listing enables you to quickly snooze, disable, enable, or delete +individual rules. For example, you can change the state of a rule: [role="screenshot"] -image:images/individual-snooze-disable.png[The rule status dropdown enables you to snooze or disable an individual rule] +image:images/individual-enable-disable.png[Use the rule status dropdown to enable or disable an individual rule] -When you snooze a rule, the rule checks continue to run on a schedule but the alert will not trigger any actions. You can snooze for a specified period of time or indefinitely. +When you snooze a rule, the rule checks continue to run on a schedule but the +alert will not trigger any actions. You can snooze for a specified period of +time, indefinitely, or schedule single or recurring downtimes: [role="screenshot"] -image:images/snooze-panel.png[The snooze panel allows you to set the length of a rule's snooze period] +image:images/snooze-panel.png[Snooze notifications for a rule] -When a rule is in a `snoozed` state, you can cancel or change the duration of this state. You can perform these operations in bulk by multi-selecting rules, and then clicking the *Manage rules* button. - -TIP: In this context, "Mute" refers to an indefinite snooze. preview:[] +When a rule is in a `snoozed` state, you can cancel or change the duration of +this state. [float] === Rule status diff --git a/docs/user/alerting/images/individual-enable-disable.png b/docs/user/alerting/images/individual-enable-disable.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdac4d9b526abc458f41a8809664783f82c87e4 GIT binary patch literal 152497 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 aSfwzhH4etOzVE{4}1su^CkxB^$i>hug?~ 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%0AR+Q-?QN3 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 From f4dafd4eff93eabc5413929114656814c5e8e4ab Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Fri, 26 Aug 2022 17:34:15 -0400 Subject: [PATCH 43/50] [cft] Update comment when deployment is available (#139558) * [cft] Update comment when deployment is available Currently cloud deployment are linked to after the entire CI run. Cloud deployments typically finish early, so this provides a notification as soon as the deployment is available. * newline * fix id --- .buildkite/scripts/steps/cloud/build_and_deploy.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.buildkite/scripts/steps/cloud/build_and_deploy.sh b/.buildkite/scripts/steps/cloud/build_and_deploy.sh index 6488eca2c9cd..017e25bb2885 100755 --- a/.buildkite/scripts/steps/cloud/build_and_deploy.sh +++ b/.buildkite/scripts/steps/cloud/build_and_deploy.sh @@ -134,3 +134,4 @@ cat << EOF | buildkite-agent annotate --style "info" --context cloud EOF buildkite-agent meta-data set pr_comment:deploy_cloud:head "* [Cloud Deployment](${CLOUD_DEPLOYMENT_KIBANA_URL})" +buildkite-agent meta-data set pr_comment:early_comment_job_id "$BUILDKITE_JOB_ID" From 8bf6132ac77acbf8dafeaa412b81dda836d5e618 Mon Sep 17 00:00:00 2001 From: Rachel Shen Date: Fri, 26 Aug 2022 16:04:51 -0600 Subject: [PATCH 44/50] Add deprecation messages (#139568) --- src/plugins/presentation_util/public/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/presentation_util/public/index.ts b/src/plugins/presentation_util/public/index.ts index afc5c45438e6..a5004b778f2b 100644 --- a/src/plugins/presentation_util/public/index.ts +++ b/src/plugins/presentation_util/public/index.ts @@ -56,16 +56,22 @@ export { export * from './components/types'; +/** @deprecated QuickButtonProps - use `IconButtonGroupProps` from `@kbn/shared-ux-button-toolbar` */ export type { QuickButtonProps } from './components/solution_toolbar'; export { + /** @deprecated AddFromLibraryButton - use `AddFromLibraryButton` from `@kbn/shared-ux-button-toolbar` */ AddFromLibraryButton, + /** @deprecated PrimaryActionButton - use `PrimaryButton` from `@kbn/shared-ux-button-toolbar` */ PrimaryActionButton, + /** @deprecated SolutionToolbarPopover - use `ToolbarPopover` from `@kbn/shared-ux-button-toolbar` */ PrimaryActionPopover, /** @deprecated QuickButtonGroup - use `IconButtonGroup` from `@kbn/shared-ux-button-toolbar` */ QuickButtonGroup, SolutionToolbar, + /** @deprecated SolutionToolbarButton - use `PrimaryButton` from `@kbn/shared-ux-button-toolbar` */ SolutionToolbarButton, + /** @deprecated SolutionToolbarPopover - use `ToolbarPopover` from `@kbn/shared-ux-button-toolbar` */ SolutionToolbarPopover, } from './components/solution_toolbar'; From 2dea72f226c2c62ee7b4daf3c61936f8092a1c85 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Fri, 26 Aug 2022 19:56:07 -0700 Subject: [PATCH 45/50] Add openAPI specifications for push case API (#137549) --- docs/api/cases/cases-api-push.asciidoc | 60 +- .../plugins/cases/docs/openapi/bundled.json | 1654 ++++++++++++----- .../plugins/cases/docs/openapi/bundled.yaml | 540 +++++- .../examples/push_case_response.yaml | 58 + .../components/parameters/connector_id.yaml | 7 + .../cases/docs/openapi/entrypoint.yaml | 8 +- .../openapi/paths/api@cases@reporters.yaml | 2 +- .../docs/openapi/paths/api@cases@status.yaml | 1 + ...caseid}@connector@{connectorid}@_push.yaml | 35 + .../paths/s@{spaceid}@api@cases@status.yaml | 1 + ...caseid}@connector@{connectorid}@_push.yaml | 36 + 11 files changed, 1861 insertions(+), 541 deletions(-) create mode 100644 x-pack/plugins/cases/docs/openapi/components/examples/push_case_response.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/components/parameters/connector_id.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml create mode 100644 x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml diff --git a/docs/api/cases/cases-api-push.asciidoc b/docs/api/cases/cases-api-push.asciidoc index 46dbc1110d58..d3bf413e1ac4 100644 --- a/docs/api/cases/cases-api-push.asciidoc +++ b/docs/api/cases/cases-api-push.asciidoc @@ -46,7 +46,7 @@ Push the case to an external service: [source,sh] -------------------------------------------------- -POST api/cases/7349772f-421a-4de3-b8bb-2d9b22ccee30/connector/abed3a70-71bd-11ea-a0b2-c51ea50a58e2/_push +POST api/cases/b917f300-0ed9-11ed-bd18-65557fe66949/connector/09f8c0b0-0eda-11ed-bd18-65557fe66949/_push {} -------------------------------------------------- // KIBANA @@ -56,57 +56,59 @@ The API returns a JSON object representing the pushed case. For example: [source,json] -------------------------------------------------- { - "id": "a18b38a0-71b0-11ea-a0b2-c51ea50a58e2", - "version": "Wzk4LDFd", + "id": "b917f300-0ed9-11ed-bd18-65557fe66949", + "version": "WzE3NjgsM10=", "comments": [], "totalComment": 0, "totalAlerts": 0, - "title": "This case will self-destruct in 5 seconds", - "tags": [ "phishing", "social engineering", "bubblegum" ], - "description": "James Bond clicked on a highly suspicious email banner advertising cheap holidays for underpaid civil servants. Operation bubblegum is active. Repeat - operation bubblegum is now active!", + "description": "A case description.", + "title": "Case title 1", + "tags": [ + "tag 1" + ], "settings": { "syncAlerts": true }, - "owner": "securitySolution", - "severity": "low", + "owner": "cases", "duration": null, + "severity": "low", "closed_at": null, "closed_by": null, - "created_at": "2022-03-29T11:30:02.658Z", + "created_at": "2022-07-29T00:59:39.444Z", "created_by": { - "email": "ahunley@imf.usa.gov", - "full_name": "Alan Hunley", - "username": "ahunley" + "username": "elastic", + "email": null, + "full_name": null }, "status": "open", - "updated_at": "2022-03-29T12:01:50.244Z", + "updated_at": "2022-07-29T01:20:58.436Z", "updated_by": { - "full_name": "Classified", - "email": "classified@hms.oo.gov.uk", - "username": "M" + "username": "elastic", + "full_name": null, + "email": null }, "connector": { - "id": "08046500-bb7b-11ec-89c3-ef74ed34b2e9", + "id": "09f8c0b0-0eda-11ed-bd18-65557fe66949", "name": "My connector", "type": ".jira", "fields": { "issueType": "10006", - "priority": "High", - "parent": null + "parent": null, + "priority": "Low" } }, "external_service": { - "pushed_at":"2022-07-26T18:19:43.688Z", - "pushed_by":{ - "username":"classified@hms.oo.gov.uk", - "full_name":null, - "email":null + "pushed_at": "2022-07-29T01:20:58.436Z", + "pushed_by": { + "username": "elastic", + "full_name": null, + "email": null }, - "connector_name":"My connector", - "external_id":"10110", - "external_title":"TPN-103", - "external_url":"https://cases.jira.com", - "connector_id":"08046500-bb7b-11ec-89c3-ef74ed34b2e9", + "connector_name": "My connector", + "external_id": "71926", + "external_title": "ES-554", + "external_url": "https://cases.jira.com", + "connector_id": "09f8c0b0-0eda-11ed-bd18-65557fe66949" } } -------------------------------------------------- diff --git a/x-pack/plugins/cases/docs/openapi/bundled.json b/x-pack/plugins/cases/docs/openapi/bundled.json index f8ccf06be0da..fdb8c9671c01 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.json +++ b/x-pack/plugins/cases/docs/openapi/bundled.json @@ -2405,7 +2405,7 @@ "/api/cases/reporters": { "get": { "summary": "Returns information about the users who opened cases in the default space.", - "operationId": "getCaseReportersDefaultCase", + "operationId": "getCaseReportersDefaultSpace", "description": "You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases. The API returns information about the users as they existed at the time of the case creation, including their name, full name, and email address. If any of those details change thereafter or if a user is deleted, the information returned by this API is unchanged.\n", "tags": [ "cases", @@ -2462,6 +2462,7 @@ "/api/cases/status": { "get": { "summary": "Returns the number of cases that are open, closed, and in progress.", + "operationId": "getCaseStatusDefaultSpace", "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", "tags": [ "cases", @@ -3644,12 +3645,11 @@ } ] }, - "/api/cases/{caseId}/user_actions": { - "get": { - "summary": "Returns all user activity for a case in the default space.", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", - "deprecated": true, - "operationId": "getCaseActivityDefaultSpace", + "/api/cases/{caseId}/connector/{connectorId}/_push": { + "post": { + "summary": "Pushes a case to an external service.", + "description": "You must have `all` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. You must also have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're pushing.\n", + "operationId": "pushCaseDefaultSpace", "tags": [ "cases", "kibana" @@ -3657,199 +3657,17 @@ "parameters": [ { "$ref": "#/components/parameters/case_id" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/user_actions_response_properties" - } - }, - "examples": { - "getCaseActivityResponse": { - "$ref": "#/components/examples/get_case_activity_response" - } - } - } - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases": { - "post": { - "summary": "Creates a case.", - "operationId": "createCase", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ + }, { - "$ref": "#/components/parameters/kbn_xsrf" + "$ref": "#/components/parameters/connector_id" }, { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/kbn_xsrf" } ], "requestBody": { "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "connector": { - "description": "An object that contains the connector configuration.", - "type": "object", - "properties": { - "fields": { - "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", - "nullable": true, - "type": "object", - "properties": { - "caseId": { - "description": "The case identifier for Swimlane connectors.", - "type": "string" - }, - "category": { - "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", - "type": "string" - }, - "destIp": { - "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", - "type": "string" - }, - "impact": { - "description": "The effect an incident had on business for ServiceNow ITSM connectors.", - "type": "string" - }, - "issueType": { - "description": "The type of issue for Jira connectors.", - "type": "string" - }, - "issueTypes": { - "description": "The type of incident for IBM Resilient connectors.", - "type": "array", - "items": { - "type": "number" - } - }, - "malwareHash": { - "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", - "type": "string" - }, - "malwareUrl": { - "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", - "type": "string" - }, - "parent": { - "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", - "type": "string" - }, - "priority": { - "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", - "type": "string" - }, - "severity": { - "description": "The severity of the incident for ServiceNow ITSM connectors.", - "type": "string" - }, - "severityCode": { - "description": "The severity code of the incident for IBM Resilient connectors.", - "type": "number" - }, - "sourceIp": { - "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", - "type": "string" - }, - "subcategory": { - "description": "The subcategory of the incident for ServiceNow ITSM connectors.", - "type": "string" - }, - "urgency": { - "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", - "type": "string" - } - }, - "example": null - }, - "id": { - "description": "The identifier for the connector. To create a case without a connector, use `none`.", - "type": "string", - "example": "none" - }, - "name": { - "description": "The name of the connector. To create a case without a connector, use `none`.", - "type": "string", - "example": "none" - }, - "type": { - "$ref": "#/components/schemas/connector_types" - } - }, - "required": [ - "fields", - "id", - "name", - "type" - ] - }, - "description": { - "description": "The description for the case.", - "type": "string" - }, - "owner": { - "$ref": "#/components/schemas/owners" - }, - "settings": { - "$ref": "#/components/schemas/settings" - }, - "severity": { - "$ref": "#/components/schemas/severity_property" - }, - "tags": { - "description": "The words and phrases that help categorize cases. It can be an empty array.", - "type": "array", - "items": { - "type": "string" - } - }, - "title": { - "description": "A title for the case.", - "type": "string" - } - }, - "required": [ - "connector", - "description", - "owner", - "settings", - "tags", - "title" - ] - }, - "examples": { - "createCaseRequest": { - "$ref": "#/components/examples/create_case_request" - } - } - } + "application/json": {} } }, "responses": { @@ -4091,8 +3909,8 @@ } }, "examples": { - "createCaseResponse": { - "$ref": "#/components/examples/create_case_response" + "pushCaseResponse": { + "$ref": "#/components/examples/push_case_response" } } } @@ -4105,35 +3923,45 @@ } ] }, - "delete": { - "summary": "Deletes one or more cases.", - "operationId": "deleteCase", - "description": "You must have `read` or `all` privileges and the `delete` sub-feature privilege for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/api/cases/{caseId}/user_actions": { + "get": { + "summary": "Returns all user activity for a case in the default space.", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", + "deprecated": true, + "operationId": "getCaseActivityDefaultSpace", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "$ref": "#/components/parameters/space_id" - }, - { - "name": "ids", - "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.", - "in": "query", - "required": true, - "schema": { - "type": "string" - }, - "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + "$ref": "#/components/parameters/case_id" } ], "responses": { - "204": { - "description": "Indicates a successful call." + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/user_actions_response_properties" + } + }, + "examples": { + "getCaseActivityResponse": { + "$ref": "#/components/examples/get_case_activity_response" + } + } + } + } } }, "servers": [ @@ -4142,15 +3970,472 @@ } ] }, - "patch": { - "summary": "Updates one or more cases.", - "operationId": "updateCase", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases": { + "post": { + "summary": "Creates a case.", + "operationId": "createCase", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connector": { + "description": "An object that contains the connector configuration.", + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + }, + "required": [ + "fields", + "id", + "name", + "type" + ] + }, + "description": { + "description": "The description for the case.", + "type": "string" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "$ref": "#/components/schemas/settings" + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "tags": { + "description": "The words and phrases that help categorize cases. It can be an empty array.", + "type": "array", + "items": { + "type": "string" + } + }, + "title": { + "description": "A title for the case.", + "type": "string" + } + }, + "required": [ + "connector", + "description", + "owner", + "settings", + "tags", + "title" + ] + }, + "examples": { + "createCaseRequest": { + "$ref": "#/components/examples/create_case_request" + } + } + } + } + }, + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "object", + "properties": { + "closed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "closed_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + }, + "nullable": true, + "example": null + }, + "comments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "example": [] + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-05-13T09:16:17.416Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + } + }, + "description": { + "type": "string", + "example": "A case description." + }, + "duration": { + "type": "integer", + "description": "The elapsed time from the creation of the case to its closure (in seconds). If the case has not been closed, the duration is set to null. If the case was closed after less than half a second, the duration is rounded down to zero.\n", + "example": 120 + }, + "external_service": { + "$ref": "#/components/schemas/external_service" + }, + "id": { + "type": "string", + "example": "66b9aa00-94fa-11ea-9f74-e7e108796192" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "$ref": "#/components/schemas/settings" + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "status": { + "$ref": "#/components/schemas/status" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "tag-1" + ] + }, + "title": { + "type": "string", + "example": "Case title 1" + }, + "totalAlerts": { + "type": "integer", + "example": 0 + }, + "totalComment": { + "type": "integer", + "example": 0 + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + }, + "nullable": true, + "example": null + }, + "version": { + "type": "string", + "example": "WzUzMiwxXQ==" + } + } + }, + "examples": { + "createCaseResponse": { + "$ref": "#/components/examples/create_case_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "delete": { + "summary": "Deletes one or more cases.", + "operationId": "deleteCase", + "description": "You must have `read` or `all` privileges and the `delete` sub-feature privilege for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/space_id" + }, + { + "name": "ids", + "description": "The cases that you want to removed. All non-ASCII characters must be URL encoded.", + "in": "query", + "required": true, + "schema": { + "type": "string" + }, + "example": "d4e7abb0-b462-11ec-9a8d-698504725a43" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "patch": { + "summary": "Updates one or more cases.", + "operationId": "updateCase", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ { "$ref": "#/components/parameters/kbn_xsrf" }, @@ -6116,23 +6401,145 @@ "schema": { "type": "array", "items": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "full_name": { - "type": "string" - }, - "username": { - "type": "string" - } - } + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "username": { + "type": "string" + } + } + } + }, + "examples": { + "getReportersResponse": { + "$ref": "#/components/examples/get_reporters_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/status": { + "get": { + "summary": "Returns the number of cases that are open, closed, and in progress.", + "operationId": "getCaseStatus", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "deprecated": true, + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/space_id" + }, + { + "$ref": "#/components/parameters/owner" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "object", + "properties": { + "count_closed_cases": { + "type": "integer" + }, + "count_in_progress_cases": { + "type": "integer" + }, + "count_open_cases": { + "type": "integer" + } + } + }, + "examples": { + "getStatusResponse": { + "$ref": "#/components/examples/get_status_response" + } + } + } + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/tags": { + "get": { + "summary": "Aggregates and returns a list of case tags.", + "operationId": "getCaseTags", + "description": "You must have read privileges for the **Cases*** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/space_id" + }, + { + "in": "query", + "name": "owner", + "description": "A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read.", + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/owners" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/owners" + } + } + ] + } + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "type": "string" } }, "examples": { - "getReportersResponse": { - "$ref": "#/components/examples/get_reporters_response" + "getTagsResponse": { + "$ref": "#/components/examples/get_tags_response" } } } @@ -6151,21 +6558,31 @@ } ] }, - "/s/{spaceId}/api/cases/status": { + "/s/{spaceId}/api/cases/{caseId}": { "get": { - "summary": "Returns the number of cases that are open, closed, and in progress.", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", - "deprecated": true, + "summary": "Retrieves information about a case.", + "operationId": "getCase", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", "tags": [ "cases", "kibana" ], "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, { "$ref": "#/components/parameters/space_id" }, { - "$ref": "#/components/parameters/owner" + "in": "query", + "name": "includeComments", + "description": "Determines whether case comments are returned.", + "deprecated": true, + "schema": { + "type": "boolean", + "default": true + } } ], "responses": { @@ -6176,20 +6593,239 @@ "schema": { "type": "object", "properties": { - "count_closed_cases": { - "type": "integer" + "closed_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null }, - "count_in_progress_cases": { - "type": "integer" + "closed_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + }, + "nullable": true, + "example": null + }, + "comments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "example": [] + }, + "connector": { + "type": "object", + "properties": { + "fields": { + "description": "An object containing the connector fields. To create a case without a connector, specify null. If you want to omit any individual field, specify null as its value.", + "nullable": true, + "type": "object", + "properties": { + "caseId": { + "description": "The case identifier for Swimlane connectors.", + "type": "string" + }, + "category": { + "description": "The category of the incident for ServiceNow ITSM and ServiceNow SecOps connectors.", + "type": "string" + }, + "destIp": { + "description": "A comma-separated list of destination IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "impact": { + "description": "The effect an incident had on business for ServiceNow ITSM connectors.", + "type": "string" + }, + "issueType": { + "description": "The type of issue for Jira connectors.", + "type": "string" + }, + "issueTypes": { + "description": "The type of incident for IBM Resilient connectors.", + "type": "array", + "items": { + "type": "number" + } + }, + "malwareHash": { + "description": "A comma-separated list of malware hashes for ServiceNow SecOps connectors.", + "type": "string" + }, + "malwareUrl": { + "description": "A comma-separated list of malware URLs for ServiceNow SecOps connectors.", + "type": "string" + }, + "parent": { + "description": "The key of the parent issue, when the issue type is sub-task for Jira connectors.", + "type": "string" + }, + "priority": { + "description": "The priority of the issue for Jira and ServiceNow SecOps connectors.", + "type": "string" + }, + "severity": { + "description": "The severity of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "severityCode": { + "description": "The severity code of the incident for IBM Resilient connectors.", + "type": "number" + }, + "sourceIp": { + "description": "A comma-separated list of source IPs for ServiceNow SecOps connectors.", + "type": "string" + }, + "subcategory": { + "description": "The subcategory of the incident for ServiceNow ITSM connectors.", + "type": "string" + }, + "urgency": { + "description": "The extent to which the incident resolution can be delayed for ServiceNow ITSM connectors.", + "type": "string" + } + }, + "example": null + }, + "id": { + "description": "The identifier for the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "name": { + "description": "The name of the connector. To create a case without a connector, use `none`.", + "type": "string", + "example": "none" + }, + "type": { + "$ref": "#/components/schemas/connector_types" + } + } + }, + "created_at": { + "type": "string", + "format": "date-time", + "example": "2022-05-13T09:16:17.416Z" + }, + "created_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + } + }, + "description": { + "type": "string", + "example": "A case description." + }, + "duration": { + "type": "integer", + "description": "The elapsed time from the creation of the case to its closure (in seconds). If the case has not been closed, the duration is set to null. If the case was closed after less than half a second, the duration is rounded down to zero.\n", + "example": 120 + }, + "external_service": { + "$ref": "#/components/schemas/external_service" + }, + "id": { + "type": "string", + "example": "66b9aa00-94fa-11ea-9f74-e7e108796192" + }, + "owner": { + "$ref": "#/components/schemas/owners" + }, + "settings": { + "$ref": "#/components/schemas/settings" + }, + "severity": { + "$ref": "#/components/schemas/severity_property" + }, + "status": { + "$ref": "#/components/schemas/status" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "tag-1" + ] + }, + "title": { + "type": "string", + "example": "Case title 1" + }, + "totalAlerts": { + "type": "integer", + "example": 0 + }, + "totalComment": { + "type": "integer", + "example": 0 + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true, + "example": null + }, + "updated_by": { + "type": "object", + "properties": { + "email": { + "type": "string", + "example": null + }, + "full_name": { + "type": "string", + "example": null + }, + "username": { + "type": "string", + "example": "elastic" + } + }, + "nullable": true, + "example": null }, - "count_open_cases": { - "type": "integer" + "version": { + "type": "string", + "example": "WzUzMiwxXQ==" } } }, "examples": { - "getStatusResponse": { - "$ref": "#/components/examples/get_status_response" + "getCaseResponse": { + "$ref": "#/components/examples/get_case_response" } } } @@ -6208,36 +6844,22 @@ } ] }, - "/s/{spaceId}/api/cases/tags": { + "/s/{spaceId}/api/cases/{caseId}/alerts": { "get": { - "summary": "Aggregates and returns a list of case tags.", - "operationId": "getCaseTags", - "description": "You must have read privileges for the **Cases*** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "summary": "Gets all alerts attached to a case.", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", + "x-technical-preview": true, + "operationId": "getCaseAlerts", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/case_id" }, { - "in": "query", - "name": "owner", - "description": "A filter to limit the retrieved case statistics to a specific set of applications. If this parameter is omitted, the response contains tags from all cases that the user has access to read.", - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/owners" - }, - { - "type": "array", - "items": { - "$ref": "#/components/schemas/owners" - } - } - ] - } + "$ref": "#/components/parameters/space_id" } ], "responses": { @@ -6248,12 +6870,12 @@ "schema": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/alert_response_properties" } }, "examples": { - "getTagsResponse": { - "$ref": "#/components/examples/get_tags_response" + "createCaseCommentResponse": { + "$ref": "#/components/examples/get_case_alerts_response" } } } @@ -6272,33 +6894,47 @@ } ] }, - "/s/{spaceId}/api/cases/{caseId}": { - "get": { - "summary": "Retrieves information about a case.", - "operationId": "getCase", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're seeking.\n", + "/s/{spaceId}/api/cases/{caseId}/comments": { + "post": { + "summary": "Adds a comment or alert to a case.", + "operationId": "addCaseComment", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/case_id" + "$ref": "#/components/parameters/kbn_xsrf" }, { - "$ref": "#/components/parameters/space_id" + "$ref": "#/components/parameters/case_id" }, { - "in": "query", - "name": "includeComments", - "description": "Determines whether case comments are returned.", - "deprecated": true, - "schema": { - "type": "boolean", - "default": true - } + "$ref": "#/components/parameters/space_id" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/add_alert_comment_request_properties" + }, + { + "$ref": "#/components/schemas/add_user_comment_request_properties" + } + ] + }, + "examples": { + "createCaseCommentRequest": { + "$ref": "#/components/examples/add_comment_request" + } + } + } + } + }, "responses": { "200": { "description": "Indicates a successful call.", @@ -6538,8 +7174,8 @@ } }, "examples": { - "getCaseResponse": { - "$ref": "#/components/examples/get_case_response" + "createCaseCommentResponse": { + "$ref": "#/components/examples/add_comment_response" } } } @@ -6552,23 +7188,18 @@ } ] }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases/{caseId}/alerts": { - "get": { - "summary": "Gets all alerts attached to a case.", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're seeking.\n", - "x-technical-preview": true, - "operationId": "getCaseAlerts", + "delete": { + "summary": "Deletes all comments and alerts from a case.", + "operationId": "deleteCaseComments", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", "tags": [ "cases", "kibana" ], "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, { "$ref": "#/components/parameters/case_id" }, @@ -6577,23 +7208,8 @@ } ], "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/alert_response_properties" - } - }, - "examples": { - "createCaseCommentResponse": { - "$ref": "#/components/examples/get_case_alerts_response" - } - } - } - } + "204": { + "description": "Indicates a successful call." } }, "servers": [ @@ -6602,17 +7218,10 @@ } ] }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases/{caseId}/comments": { - "post": { - "summary": "Adds a comment or alert to a case.", - "operationId": "addCaseComment", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're creating.\n", + "patch": { + "summary": "Updates a comment or alert in a case.", + "operationId": "updateCaseComment", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.\n", "tags": [ "cases", "kibana" @@ -6634,16 +7243,16 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/add_alert_comment_request_properties" + "$ref": "#/components/schemas/update_alert_comment_request_properties" }, { - "$ref": "#/components/schemas/add_user_comment_request_properties" + "$ref": "#/components/schemas/update_user_comment_request_properties" } ] }, "examples": { - "createCaseCommentRequest": { - "$ref": "#/components/examples/add_comment_request" + "updateCaseCommentRequest": { + "$ref": "#/components/examples/update_comment_request" } } } @@ -6888,8 +7497,8 @@ } }, "examples": { - "createCaseCommentResponse": { - "$ref": "#/components/examples/add_comment_response" + "updateCaseCommentResponse": { + "$ref": "#/components/examples/update_comment_response" } } } @@ -6902,28 +7511,133 @@ } ] }, - "delete": { - "summary": "Deletes all comments and alerts from a case.", - "operationId": "deleteCaseComments", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "get": { + "summary": "Retrieves all the comments from a case.", + "operationId": "getAllCaseComments", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", + "deprecated": true, + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "responses": { + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + } + } + }, + "examples": {} + } + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/{caseId}/comments/{commentId}": { + "delete": { + "summary": "Deletes a comment or alert from a case.", + "operationId": "deleteCaseComment", + "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", + "tags": [ + "cases", + "kibana" + ], + "parameters": [ + { + "$ref": "#/components/parameters/kbn_xsrf" + }, + { + "$ref": "#/components/parameters/case_id" + }, + { + "$ref": "#/components/parameters/comment_id" + }, + { + "$ref": "#/components/parameters/space_id" + } + ], + "responses": { + "204": { + "description": "Indicates a successful call." + } + }, + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "get": { + "summary": "Retrieves a comment from a case.", + "operationId": "getCaseComment", + "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security*** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/kbn_xsrf" + "$ref": "#/components/parameters/case_id" }, { - "$ref": "#/components/parameters/case_id" + "$ref": "#/components/parameters/comment_id" }, { "$ref": "#/components/parameters/space_id" } ], "responses": { - "204": { - "description": "Indicates a successful call." + "200": { + "description": "Indicates a successful call.", + "content": { + "application/json; charset=utf-8": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/alert_comment_response_properties" + }, + { + "$ref": "#/components/schemas/user_comment_response_properties" + } + ] + }, + "examples": { + "getCaseCommentResponse": { + "$ref": "#/components/examples/get_comment_response" + } + } + } + } } }, "servers": [ @@ -6932,20 +7646,30 @@ } ] }, - "patch": { - "summary": "Updates a comment or alert in a case.", - "operationId": "updateCaseComment", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're updating. NOTE: You cannot change the comment type or the owner of a comment.\n", + "servers": [ + { + "url": "https://localhost:5601" + } + ] + }, + "/s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push": { + "post": { + "summary": "Pushes a case to an external service.", + "description": "You must have `all` privileges for the **Actions and Connectors** feature in the **Management** section of the Kibana feature privileges. You must also have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the case you're pushing.\n", + "operationId": "pushCase", "tags": [ "cases", "kibana" ], "parameters": [ { - "$ref": "#/components/parameters/kbn_xsrf" + "$ref": "#/components/parameters/case_id" }, { - "$ref": "#/components/parameters/case_id" + "$ref": "#/components/parameters/connector_id" + }, + { + "$ref": "#/components/parameters/kbn_xsrf" }, { "$ref": "#/components/parameters/space_id" @@ -6953,23 +7677,7 @@ ], "requestBody": { "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/update_alert_comment_request_properties" - }, - { - "$ref": "#/components/schemas/update_user_comment_request_properties" - } - ] - }, - "examples": { - "updateCaseCommentRequest": { - "$ref": "#/components/examples/update_comment_request" - } - } - } + "application/json": {} } }, "responses": { @@ -7211,143 +7919,8 @@ } }, "examples": { - "updateCaseCommentResponse": { - "$ref": "#/components/examples/update_comment_response" - } - } - } - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "get": { - "summary": "Retrieves all the comments from a case.", - "operationId": "getAllCaseComments", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", - "deprecated": true, - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/case_id" - }, - { - "$ref": "#/components/parameters/space_id" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/alert_comment_response_properties" - }, - { - "$ref": "#/components/schemas/user_comment_response_properties" - } - ] - } - } - }, - "examples": {} - } - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "/s/{spaceId}/api/cases/{caseId}/comments/{commentId}": { - "delete": { - "summary": "Deletes a comment or alert from a case.", - "operationId": "deleteCaseComment", - "description": "You must have `all` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, depending on the owner of the cases you're deleting.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/kbn_xsrf" - }, - { - "$ref": "#/components/parameters/case_id" - }, - { - "$ref": "#/components/parameters/comment_id" - }, - { - "$ref": "#/components/parameters/space_id" - } - ], - "responses": { - "204": { - "description": "Indicates a successful call." - } - }, - "servers": [ - { - "url": "https://localhost:5601" - } - ] - }, - "get": { - "summary": "Retrieves a comment from a case.", - "operationId": "getCaseComment", - "description": "You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security*** section of the Kibana feature privileges, depending on the owner of the cases with the comments you're seeking.\n", - "tags": [ - "cases", - "kibana" - ], - "parameters": [ - { - "$ref": "#/components/parameters/case_id" - }, - { - "$ref": "#/components/parameters/comment_id" - }, - { - "$ref": "#/components/parameters/space_id" - } - ], - "responses": { - "200": { - "description": "Indicates a successful call.", - "content": { - "application/json; charset=utf-8": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/alert_comment_response_properties" - }, - { - "$ref": "#/components/schemas/user_comment_response_properties" - } - ] - }, - "examples": { - "getCaseCommentResponse": { - "$ref": "#/components/examples/get_comment_response" + "pushCaseResponse": { + "$ref": "#/components/examples/push_case_response" } } } @@ -7511,6 +8084,16 @@ "example": "71ec1870-725b-11ea-a0b2-c51ea50a58e2" } }, + "connector_id": { + "in": "path", + "name": "connectorId", + "description": "An identifier for the connector. To retrieve connector IDs, use the find connectors API.", + "required": true, + "schema": { + "type": "string", + "example": "abed3a70-71bd-11ea-a0b2-c51ea50a58e2" + } + }, "space_id": { "in": "path", "name": "spaceId", @@ -9046,6 +9629,65 @@ "updated_by": null } }, + "push_case_response": { + "summary": "The push case API returns a JSON object with details about the case and the external service.", + "value": { + "id": "b917f300-0ed9-11ed-bd18-65557fe66949", + "version": "WzE3NjgsM10=", + "comments": [], + "totalComment": 0, + "totalAlerts": 0, + "description": "A case description.", + "title": "Case title 1", + "tags": [ + "tag 1" + ], + "settings": { + "syncAlerts": true + }, + "owner": "cases", + "duration": null, + "severity": "low", + "closed_at": null, + "closed_by": null, + "created_at": "2022-07-29T00:59:39.444Z", + "created_by": { + "username": "elastic", + "email": null, + "full_name": null + }, + "status": "open", + "updated_at": "2022-07-29T01:20:58.436Z", + "updated_by": { + "username": "elastic", + "full_name": null, + "email": null + }, + "connector": { + "id": "09f8c0b0-0eda-11ed-bd18-65557fe66949", + "name": "My connector", + "type": ".jira", + "fields": { + "issueType": "10006", + "parent": null, + "priority": "Low" + } + }, + "external_service": { + "pushed_at": "2022-07-29T01:20:58.436Z", + "pushed_by": { + "username": "elastic", + "full_name": null, + "email": null + }, + "connector_name": "My connector", + "external_id": "71926", + "external_title": "ES-554", + "external_url": "https://cases.jira.com", + "connector_id": "09f8c0b0-0eda-11ed-bd18-65557fe66949" + } + } + }, "get_case_activity_response": { "summary": "Retrieves all activity for a case", "value": [ diff --git a/x-pack/plugins/cases/docs/openapi/bundled.yaml b/x-pack/plugins/cases/docs/openapi/bundled.yaml index 188cbc409f40..edfce3821e54 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.yaml +++ b/x-pack/plugins/cases/docs/openapi/bundled.yaml @@ -2070,7 +2070,7 @@ paths: summary: >- Returns information about the users who opened cases in the default space. - operationId: getCaseReportersDefaultCase + operationId: getCaseReportersDefaultSpace description: > You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana @@ -2110,6 +2110,7 @@ paths: /api/cases/status: get: summary: Returns the number of cases that are open, closed, and in progress. + operationId: getCaseStatusDefaultSpace description: > You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana @@ -3024,6 +3025,243 @@ paths: - url: https://localhost:5601 servers: - url: https://localhost:5601 + /api/cases/{caseId}/connector/{connectorId}/_push: + post: + summary: Pushes a case to an external service. + description: > + You must have `all` privileges for the **Actions and Connectors** + feature in the **Management** section of the Kibana feature privileges. + You must also have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're pushing. + operationId: pushCaseDefaultSpace + tags: + - cases + - kibana + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/connector_id' + - $ref: '#/components/parameters/kbn_xsrf' + requestBody: + content: + application/json: {} + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + closed_at: + type: string + format: date-time + nullable: true + example: null + closed_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + nullable: true + example: null + comments: + type: array + items: + oneOf: + - $ref: >- + #/components/schemas/alert_comment_response_properties + - $ref: >- + #/components/schemas/user_comment_response_properties + example: [] + connector: + type: object + properties: + fields: + description: >- + An object containing the connector fields. To create a + case without a connector, specify null. If you want to + omit any individual field, specify null as its value. + nullable: true + type: object + properties: + caseId: + description: The case identifier for Swimlane connectors. + type: string + category: + description: >- + The category of the incident for ServiceNow ITSM + and ServiceNow SecOps connectors. + type: string + destIp: + description: >- + A comma-separated list of destination IPs for + ServiceNow SecOps connectors. + type: string + impact: + description: >- + The effect an incident had on business for + ServiceNow ITSM connectors. + type: string + issueType: + description: The type of issue for Jira connectors. + type: string + issueTypes: + description: The type of incident for IBM Resilient connectors. + type: array + items: + type: number + malwareHash: + description: >- + A comma-separated list of malware hashes for + ServiceNow SecOps connectors. + type: string + malwareUrl: + description: >- + A comma-separated list of malware URLs for + ServiceNow SecOps connectors. + type: string + parent: + description: >- + The key of the parent issue, when the issue type + is sub-task for Jira connectors. + type: string + priority: + description: >- + The priority of the issue for Jira and ServiceNow + SecOps connectors. + type: string + severity: + description: >- + The severity of the incident for ServiceNow ITSM + connectors. + type: string + severityCode: + description: >- + The severity code of the incident for IBM + Resilient connectors. + type: number + sourceIp: + description: >- + A comma-separated list of source IPs for + ServiceNow SecOps connectors. + type: string + subcategory: + description: >- + The subcategory of the incident for ServiceNow + ITSM connectors. + type: string + urgency: + description: >- + The extent to which the incident resolution can be + delayed for ServiceNow ITSM connectors. + type: string + example: null + id: + description: >- + The identifier for the connector. To create a case + without a connector, use `none`. + type: string + example: none + name: + description: >- + The name of the connector. To create a case without a + connector, use `none`. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-05-13T09:16:17.416Z' + created_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + description: + type: string + example: A case description. + duration: + type: integer + description: > + The elapsed time from the creation of the case to its + closure (in seconds). If the case has not been closed, the + duration is set to null. If the case was closed after less + than half a second, the duration is rounded down to zero. + example: 120 + external_service: + $ref: '#/components/schemas/external_service' + id: + type: string + example: 66b9aa00-94fa-11ea-9f74-e7e108796192 + owner: + $ref: '#/components/schemas/owners' + settings: + $ref: '#/components/schemas/settings' + severity: + $ref: '#/components/schemas/severity_property' + status: + $ref: '#/components/schemas/status' + tags: + type: array + items: + type: string + example: + - tag-1 + title: + type: string + example: Case title 1 + totalAlerts: + type: integer + example: 0 + totalComment: + type: integer + example: 0 + updated_at: + type: string + format: date-time + nullable: true + example: null + updated_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + nullable: true + example: null + version: + type: string + example: WzUzMiwxXQ== + examples: + pushCaseResponse: + $ref: '#/components/examples/push_case_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 /api/cases/{caseId}/user_actions: get: summary: Returns all user activity for a case in the default space. @@ -5160,6 +5398,7 @@ paths: /s/{spaceId}/api/cases/status: get: summary: Returns the number of cases that are open, closed, and in progress. + operationId: getCaseStatus description: > You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana @@ -6084,6 +6323,244 @@ paths: - url: https://localhost:5601 servers: - url: https://localhost:5601 + /s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push: + post: + summary: Pushes a case to an external service. + description: > + You must have `all` privileges for the **Actions and Connectors** + feature in the **Management** section of the Kibana feature privileges. + You must also have `all` privileges for the **Cases** feature in the + **Management**, **Observability**, or **Security** section of the Kibana + feature privileges, depending on the owner of the case you're pushing. + operationId: pushCase + tags: + - cases + - kibana + parameters: + - $ref: '#/components/parameters/case_id' + - $ref: '#/components/parameters/connector_id' + - $ref: '#/components/parameters/kbn_xsrf' + - $ref: '#/components/parameters/space_id' + requestBody: + content: + application/json: {} + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + closed_at: + type: string + format: date-time + nullable: true + example: null + closed_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + nullable: true + example: null + comments: + type: array + items: + oneOf: + - $ref: >- + #/components/schemas/alert_comment_response_properties + - $ref: >- + #/components/schemas/user_comment_response_properties + example: [] + connector: + type: object + properties: + fields: + description: >- + An object containing the connector fields. To create a + case without a connector, specify null. If you want to + omit any individual field, specify null as its value. + nullable: true + type: object + properties: + caseId: + description: The case identifier for Swimlane connectors. + type: string + category: + description: >- + The category of the incident for ServiceNow ITSM + and ServiceNow SecOps connectors. + type: string + destIp: + description: >- + A comma-separated list of destination IPs for + ServiceNow SecOps connectors. + type: string + impact: + description: >- + The effect an incident had on business for + ServiceNow ITSM connectors. + type: string + issueType: + description: The type of issue for Jira connectors. + type: string + issueTypes: + description: The type of incident for IBM Resilient connectors. + type: array + items: + type: number + malwareHash: + description: >- + A comma-separated list of malware hashes for + ServiceNow SecOps connectors. + type: string + malwareUrl: + description: >- + A comma-separated list of malware URLs for + ServiceNow SecOps connectors. + type: string + parent: + description: >- + The key of the parent issue, when the issue type + is sub-task for Jira connectors. + type: string + priority: + description: >- + The priority of the issue for Jira and ServiceNow + SecOps connectors. + type: string + severity: + description: >- + The severity of the incident for ServiceNow ITSM + connectors. + type: string + severityCode: + description: >- + The severity code of the incident for IBM + Resilient connectors. + type: number + sourceIp: + description: >- + A comma-separated list of source IPs for + ServiceNow SecOps connectors. + type: string + subcategory: + description: >- + The subcategory of the incident for ServiceNow + ITSM connectors. + type: string + urgency: + description: >- + The extent to which the incident resolution can be + delayed for ServiceNow ITSM connectors. + type: string + example: null + id: + description: >- + The identifier for the connector. To create a case + without a connector, use `none`. + type: string + example: none + name: + description: >- + The name of the connector. To create a case without a + connector, use `none`. + type: string + example: none + type: + $ref: '#/components/schemas/connector_types' + created_at: + type: string + format: date-time + example: '2022-05-13T09:16:17.416Z' + created_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + description: + type: string + example: A case description. + duration: + type: integer + description: > + The elapsed time from the creation of the case to its + closure (in seconds). If the case has not been closed, the + duration is set to null. If the case was closed after less + than half a second, the duration is rounded down to zero. + example: 120 + external_service: + $ref: '#/components/schemas/external_service' + id: + type: string + example: 66b9aa00-94fa-11ea-9f74-e7e108796192 + owner: + $ref: '#/components/schemas/owners' + settings: + $ref: '#/components/schemas/settings' + severity: + $ref: '#/components/schemas/severity_property' + status: + $ref: '#/components/schemas/status' + tags: + type: array + items: + type: string + example: + - tag-1 + title: + type: string + example: Case title 1 + totalAlerts: + type: integer + example: 0 + totalComment: + type: integer + example: 0 + updated_at: + type: string + format: date-time + nullable: true + example: null + updated_by: + type: object + properties: + email: + type: string + example: null + full_name: + type: string + example: null + username: + type: string + example: elastic + nullable: true + example: null + version: + type: string + example: WzUzMiwxXQ== + examples: + pushCaseResponse: + $ref: '#/components/examples/push_case_response' + servers: + - url: https://localhost:5601 + servers: + - url: https://localhost:5601 /s/{spaceId}/api/cases/{caseId}/user_actions: get: summary: Returns all user activity for a case. @@ -6192,6 +6669,16 @@ components: schema: type: string example: 71ec1870-725b-11ea-a0b2-c51ea50a58e2 + connector_id: + in: path + name: connectorId + description: >- + An identifier for the connector. To retrieve connector IDs, use the find + connectors API. + required: true + schema: + type: string + example: abed3a70-71bd-11ea-a0b2-c51ea50a58e2 space_id: in: path name: spaceId @@ -7423,6 +7910,57 @@ components: pushed_by: null updated_at: null updated_by: null + push_case_response: + summary: >- + The push case API returns a JSON object with details about the case and + the external service. + value: + id: b917f300-0ed9-11ed-bd18-65557fe66949 + version: WzE3NjgsM10= + comments: [] + totalComment: 0 + totalAlerts: 0 + description: A case description. + title: Case title 1 + tags: + - tag 1 + settings: + syncAlerts: true + owner: cases + duration: null + severity: low + closed_at: null + closed_by: null + created_at: '2022-07-29T00:59:39.444Z' + created_by: + username: elastic + email: null + full_name: null + status: open + updated_at: '2022-07-29T01:20:58.436Z' + updated_by: + username: elastic + full_name: null + email: null + connector: + id: 09f8c0b0-0eda-11ed-bd18-65557fe66949 + name: My connector + type: .jira + fields: + issueType: '10006' + parent: null + priority: Low + external_service: + pushed_at: '2022-07-29T01:20:58.436Z' + pushed_by: + username: elastic + full_name: null + email: null + connector_name: My connector + external_id: '71926' + external_title: ES-554 + external_url: https://cases.jira.com + connector_id: 09f8c0b0-0eda-11ed-bd18-65557fe66949 get_case_activity_response: summary: Retrieves all activity for a case value: diff --git a/x-pack/plugins/cases/docs/openapi/components/examples/push_case_response.yaml b/x-pack/plugins/cases/docs/openapi/components/examples/push_case_response.yaml new file mode 100644 index 000000000000..0aa0f11711af --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/examples/push_case_response.yaml @@ -0,0 +1,58 @@ +summary: The push case API returns a JSON object with details about the case and the external service. +value: + { + "id": "b917f300-0ed9-11ed-bd18-65557fe66949", + "version": "WzE3NjgsM10=", + "comments": [], + "totalComment": 0, + "totalAlerts": 0, + "description": "A case description.", + "title": "Case title 1", + "tags": [ + "tag 1" + ], + "settings": { + "syncAlerts": true + }, + "owner": "cases", + "duration": null, + "severity": "low", + "closed_at": null, + "closed_by": null, + "created_at": "2022-07-29T00:59:39.444Z", + "created_by": { + "username": "elastic", + "email": null, + "full_name": null + }, + "status": "open", + "updated_at": "2022-07-29T01:20:58.436Z", + "updated_by": { + "username": "elastic", + "full_name": null, + "email": null + }, + "connector": { + "id": "09f8c0b0-0eda-11ed-bd18-65557fe66949", + "name": "My connector", + "type": ".jira", + "fields": { + "issueType": "10006", + "parent": null, + "priority": "Low" + } + }, + "external_service": { + "pushed_at": "2022-07-29T01:20:58.436Z", + "pushed_by": { + "username": "elastic", + "full_name": null, + "email": null + }, + "connector_name": "My connector", + "external_id": "71926", + "external_title": "ES-554", + "external_url": "https://cases.jira.com", + "connector_id": "09f8c0b0-0eda-11ed-bd18-65557fe66949" + } + } \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/connector_id.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/connector_id.yaml new file mode 100644 index 000000000000..71cdc7191cfa --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/connector_id.yaml @@ -0,0 +1,7 @@ +in: path +name: connectorId +description: An identifier for the connector. To retrieve connector IDs, use the find connectors API. +required: true +schema: + type: string + example: abed3a70-71bd-11ea-a0b2-c51ea50a58e2 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml index 53bb8caa741d..3866c4fe4edc 100644 --- a/x-pack/plugins/cases/docs/openapi/entrypoint.yaml +++ b/x-pack/plugins/cases/docs/openapi/entrypoint.yaml @@ -43,8 +43,8 @@ paths: $ref: 'paths/api@cases@{caseid}@comments.yaml' '/api/cases/{caseId}/comments/{commentId}': $ref: 'paths/api@cases@{caseid}@comments@{commentid}.yaml' -# '/api/cases/{caseId}/connector/{connectorId}/_push': -# $ref: 'paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml' + '/api/cases/{caseId}/connector/{connectorId}/_push': + $ref: 'paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml' '/api/cases/{caseId}/user_actions': $ref: 'paths/api@cases@{caseid}@user_actions.yaml' @@ -74,8 +74,8 @@ paths: $ref: 'paths/s@{spaceid}@api@cases@{caseid}@comments.yaml' '/s/{spaceId}/api/cases/{caseId}/comments/{commentId}': $ref: 'paths/s@{spaceid}@api@cases@{caseid}@comments@{commentid}.yaml' - # '/s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push': - # $ref: 'paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml' + '/s/{spaceId}/api/cases/{caseId}/connector/{connectorId}/_push': + $ref: 'paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml' '/s/{spaceId}/api/cases/{caseId}/user_actions': $ref: 'paths/s@{spaceid}@api@cases@{caseid}@user_actions.yaml' components: diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml index dcc601c7d4a7..db5809a88754 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@reporters.yaml @@ -1,6 +1,6 @@ get: summary: Returns information about the users who opened cases in the default space. - operationId: getCaseReportersDefaultCase + operationId: getCaseReportersDefaultSpace description: > You must have read privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana feature privileges, diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml index 76ad2c51b176..580248e0d99c 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@status.yaml @@ -1,5 +1,6 @@ get: summary: Returns the number of cases that are open, closed, and in progress. + operationId: getCaseStatusDefaultSpace description: > You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana diff --git a/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml new file mode 100644 index 000000000000..7fc3a73db00b --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/api@cases@{caseid}@connector@{connectorid}@_push.yaml @@ -0,0 +1,35 @@ +post: + summary: Pushes a case to an external service. + description: > + You must have `all` privileges for the **Actions and Connectors** feature in + the **Management** section of the Kibana feature privileges. You must also + have `all` privileges for the **Cases** feature in the **Management**, + **Observability**, or **Security** section of the Kibana feature privileges, + depending on the owner of the case you're pushing. + operationId: pushCaseDefaultSpace + tags: + - cases + - kibana + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/connector_id.yaml' + - $ref: '../components/headers/kbn_xsrf.yaml' + requestBody: + content: + application/json: {} + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + pushCaseResponse: + $ref: '../components/examples/push_case_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@status.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@status.yaml index 2d9ee27ae115..5d8aa302fd76 100644 --- a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@status.yaml +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@status.yaml @@ -1,5 +1,6 @@ get: summary: Returns the number of cases that are open, closed, and in progress. + operationId: getCaseStatus description: > You must have `read` privileges for the **Cases** feature in the **Management**, **Observability**, or **Security** section of the Kibana diff --git a/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml new file mode 100644 index 000000000000..d2291b59ec08 --- /dev/null +++ b/x-pack/plugins/cases/docs/openapi/paths/s@{spaceid}@api@cases@{caseid}@connector@{connectorid}@_push.yaml @@ -0,0 +1,36 @@ +post: + summary: Pushes a case to an external service. + description: > + You must have `all` privileges for the **Actions and Connectors** feature in + the **Management** section of the Kibana feature privileges. You must also + have `all` privileges for the **Cases** feature in the **Management**, + **Observability**, or **Security** section of the Kibana feature privileges, + depending on the owner of the case you're pushing. + operationId: pushCase + tags: + - cases + - kibana + parameters: + - $ref: '../components/parameters/case_id.yaml' + - $ref: '../components/parameters/connector_id.yaml' + - $ref: '../components/headers/kbn_xsrf.yaml' + - $ref: '../components/parameters/space_id.yaml' + requestBody: + content: + application/json: {} + responses: + '200': + description: Indicates a successful call. + content: + application/json; charset=utf-8: + schema: + type: object + properties: + $ref: '../components/schemas/case_response_properties.yaml' + examples: + pushCaseResponse: + $ref: '../components/examples/push_case_response.yaml' + servers: + - url: https://localhost:5601 +servers: + - url: https://localhost:5601 \ No newline at end of file From e19232cc02dbd3d975eea6316cb0e3877b97da42 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 27 Aug 2022 00:45:30 -0400 Subject: [PATCH 46/50] [api-docs] Daily api_docs build (#139601) --- api_docs/actions.devdocs.json | 71 + api_docs/actions.mdx | 4 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.devdocs.json | 4 - api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.devdocs.json | 7066 +++++++++++++---- api_docs/core.mdx | 4 +- api_docs/core_application.mdx | 4 +- api_docs/core_chrome.mdx | 4 +- api_docs/core_saved_objects.mdx | 30 - api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 10 +- api_docs/deprecations_by_team.mdx | 3 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/fleet.devdocs.json | 16 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- .../kbn_core_deprecations_server.devdocs.json | 237 + api_docs/kbn_core_deprecations_server.mdx | 30 + api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- .../kbn_core_injected_metadata_browser.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- .../kbn_core_mount_utils_browser_internal.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- ...core_saved_objects_api_server.devdocs.json | 62 + .../kbn_core_saved_objects_api_server.mdx | 4 +- ..._objects_api_server_internal.devdocs.json} | 742 +- ...core_saved_objects_api_server_internal.mdx | 30 + ...aved_objects_api_server_mocks.devdocs.json | 118 + ...bn_core_saved_objects_api_server_mocks.mdx | 30 + ..._objects_base_server_internal.devdocs.json | 31 + ...ore_saved_objects_base_server_internal.mdx | 6 +- ...n_core_saved_objects_base_server_mocks.mdx | 4 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ...import_export_server_internal.devdocs.json | 492 ++ ..._objects_import_export_server_internal.mdx | 30 + ...ts_import_export_server_mocks.devdocs.json | 88 + ...ved_objects_import_export_server_mocks.mdx | 30 + ...cts_migration_server_internal.devdocs.json | 1599 ++++ ...aved_objects_migration_server_internal.mdx | 36 + ...bjects_migration_server_mocks.devdocs.json | 202 + ...e_saved_objects_migration_server_mocks.mdx | 33 + api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...saved_objects_server_internal.devdocs.json | 185 + ...kbn_core_saved_objects_server_internal.mdx | 33 + ...re_saved_objects_server_mocks.devdocs.json | 261 + .../kbn_core_saved_objects_server_mocks.mdx | 30 + .../kbn_core_saved_objects_utils_server.mdx | 4 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- .../kbn_core_usage_data_server.devdocs.json | 2031 +++++ api_docs/kbn_core_usage_data_server.mdx | 33 + api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_get_repo_files.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_manifest_parser.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_type_summarizer_core.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 28 +- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.devdocs.json | 8 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 380 files changed, 11535 insertions(+), 2782 deletions(-) delete mode 100644 api_docs/core_saved_objects.mdx create mode 100644 api_docs/kbn_core_deprecations_server.devdocs.json create mode 100644 api_docs/kbn_core_deprecations_server.mdx rename api_docs/{core_saved_objects.devdocs.json => kbn_core_saved_objects_api_server_internal.devdocs.json} (57%) create mode 100644 api_docs/kbn_core_saved_objects_api_server_internal.mdx create mode 100644 api_docs/kbn_core_saved_objects_api_server_mocks.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_api_server_mocks.mdx create mode 100644 api_docs/kbn_core_saved_objects_import_export_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_import_export_server_internal.mdx create mode 100644 api_docs/kbn_core_saved_objects_import_export_server_mocks.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx create mode 100644 api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_migration_server_internal.mdx create mode 100644 api_docs/kbn_core_saved_objects_migration_server_mocks.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_migration_server_mocks.mdx create mode 100644 api_docs/kbn_core_saved_objects_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_server_internal.mdx create mode 100644 api_docs/kbn_core_saved_objects_server_mocks.devdocs.json create mode 100644 api_docs/kbn_core_saved_objects_server_mocks.mdx create mode 100644 api_docs/kbn_core_usage_data_server.devdocs.json create mode 100644 api_docs/kbn_core_usage_data_server.mdx diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 615835f7b85a..12c93b9127a2 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -2570,6 +2570,37 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.getConnectorCompatibility", + "type": "Function", + "tags": [], + "label": "getConnectorCompatibility", + "description": [], + "signature": [ + "(featureIds: string[] | undefined) => string[]" + ], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.getConnectorCompatibility.$1", + "type": "Array", + "tags": [], + "label": "featureIds", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.getConnectorFeatureName", @@ -3751,6 +3782,16 @@ "description": [], "path": "x-pack/plugins/actions/common/connector_feature_config.ts", "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.AlertingConnectorFeature.compatibility", + "type": "string", + "tags": [], + "label": "compatibility", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false } ], "initialIsOpen": false @@ -3784,6 +3825,16 @@ "description": [], "path": "x-pack/plugins/actions/common/connector_feature_config.ts", "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.CasesConnectorFeature.compatibility", + "type": "string", + "tags": [], + "label": "compatibility", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false } ], "initialIsOpen": false @@ -3831,6 +3882,16 @@ "description": [], "path": "x-pack/plugins/actions/common/connector_feature_config.ts", "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.SecuritySolutionFeature.compatibility", + "type": "string", + "tags": [], + "label": "compatibility", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false } ], "initialIsOpen": false @@ -4092,6 +4153,16 @@ "description": [], "path": "x-pack/plugins/actions/common/connector_feature_config.ts", "deprecated": false + }, + { + "parentPluginId": "actions", + "id": "def-common.UptimeConnectorFeature.compatibility", + "type": "string", + "tags": [], + "label": "compatibility", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index b3dc1d5f93ed..72099fd253d7 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Response Ops](https://github.com/orgs/elastic/teams/response-ops) for q | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 266 | 0 | 261 | 19 | +| 272 | 0 | 267 | 19 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index af02710d79c7..f7fc368181e3 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 9a2d71b4045e..24442adb5f84 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index e6b0f372f675..af7df89aa778 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index 10eb9c1dc4af..ed625467a5aa 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -1050,10 +1050,6 @@ "LiteralC", "<", "PrivilegeType", - ".SOURCEMAP>, ", - "LiteralC", - "<", - "PrivilegeType", ".EVENT>, ", "LiteralC", "<", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 5692d52dbb7e..4c5b2b5b07da 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 90883d94d735..169ecaab747c 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index e27a9fcb2581..db1ce69fa779 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index ba12a5428450..3d7a093f9a46 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index d86be2b4780f..f699a1be48ea 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 2c497c7b571d..dc086d340d10 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 9e88a920c73f..faf5e439c198 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 918ed9418663..601c7b3cbddf 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 10a5875ec89e..88eddcfb0326 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 5e20fd9ae5ed..688c3243c470 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 416752a227c6..c62d36665ce8 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -11679,388 +11679,312 @@ }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils", + "id": "def-server.SavedObjectsExportError", "type": "Class", "tags": [], - "label": "SavedObjectsUtils", + "label": "SavedObjectsExportError", "description": [], "signature": [ - "SavedObjectsUtils" + "SavedObjectsExportError", + " extends Error" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.namespaceIdToString", - "type": "Function", + "id": "def-server.SavedObjectsExportError.type", + "type": "string", "tags": [], - "label": "namespaceIdToString", - "description": [ - "\nConverts a given saved object namespace ID to its string representation. All namespace IDs have an identical string representation, with\nthe exception of the `undefined` namespace ID (which has a namespace string of `'default'`).\n" - ], + "label": "type", + "description": [], + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsExportError.attributes", + "type": "Object", + "tags": [], + "label": "attributes", + "description": [], "signature": [ - "(namespace?: string | undefined) => string" + "Record | undefined" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.namespaceIdToString.$1", - "type": "string", - "tags": [], - "label": "namespace", - "description": [ - "The namespace ID, which must be either a non-empty string or `undefined`." - ], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false - } - ] + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.namespaceStringToId", + "id": "def-server.SavedObjectsExportError.Unnamed", "type": "Function", "tags": [], - "label": "namespaceStringToId", - "description": [ - "\nConverts a given saved object namespace string to its ID representation. All namespace strings have an identical ID representation, with\nthe exception of the `'default'` namespace string (which has a namespace ID of `undefined`).\n" - ], + "label": "Constructor", + "description": [], "signature": [ - "(namespace: string) => string | undefined" + "any" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, - "returnComment": [], "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.namespaceStringToId.$1", + "id": "def-server.SavedObjectsExportError.Unnamed.$1", "type": "string", "tags": [], - "label": "namespace", - "description": [ - "The namespace string, which must be non-empty." + "label": "type", + "description": [], + "signature": [ + "string" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsExportError.Unnamed.$2", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsExportError.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "attributes", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false } - ] + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.createEmptyFindResponse", + "id": "def-server.SavedObjectsExportError.exportSizeExceeded", "type": "Function", "tags": [], - "label": "createEmptyFindResponse", - "description": [ - "\nCreates an empty response for a find operation. This is only intended to be used by saved objects client wrappers." - ], + "label": "exportSizeExceeded", + "description": [], "signature": [ - "({ page, perPage, }: ", - "SavedObjectsFindOptions", - ") => ", - "SavedObjectsFindResponse", - "" + "(limit: number) => ", + "SavedObjectsExportError" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, - "returnComment": [], "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.createEmptyFindResponse.$1", - "type": "Object", + "id": "def-server.SavedObjectsExportError.exportSizeExceeded.$1", + "type": "number", "tags": [], - "label": "__0", + "label": "limit", "description": [], "signature": [ - "SavedObjectsFindOptions" + "number" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true } - ] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.generateId", - "type": "Function", - "tags": [], - "label": "generateId", - "description": [ - "\nGenerates a random ID for a saved objects." - ], - "signature": [ - "() => string" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false, - "children": [], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.isRandomId", + "id": "def-server.SavedObjectsExportError.objectFetchError", "type": "Function", - "tags": [ - "todo" - ], - "label": "isRandomId", - "description": [ - "\nValidates that a saved object ID has been randomly generated.\n" - ], + "tags": [], + "label": "objectFetchError", + "description": [], "signature": [ - "(id: string | undefined) => boolean" + "(objects: ", + "SavedObject", + "[]) => ", + "SavedObjectsExportError" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.isRandomId.$1", - "type": "string", + "id": "def-server.SavedObjectsExportError.objectFetchError.$1", + "type": "Array", "tags": [], - "label": "id", - "description": [ - "The ID of a saved object." - ], + "label": "objects", + "description": [], "signature": [ - "string | undefined" + "SavedObject", + "[]" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.getConvertedObjectId", + "id": "def-server.SavedObjectsExportError.objectTransformError", "type": "Function", "tags": [], - "label": "getConvertedObjectId", + "label": "objectTransformError", "description": [ - "\nUses a single-namespace object's \"legacy ID\" to determine what its new ID will be after it is converted to a multi-namespace type.\n" + "\nError returned when a {@link SavedObjectsExportTransform | export transform} threw an error" ], "signature": [ - "(namespace: string | undefined, type: string, id: string) => string" + "(objects: ", + "SavedObject", + "[], cause: Error) => ", + "SavedObjectsExportError" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$1", - "type": "string", + "id": "def-server.SavedObjectsExportError.objectTransformError.$1", + "type": "Array", "tags": [], - "label": "namespace", - "description": [ - "The namespace of the saved object before it is converted." - ], + "label": "objects", + "description": [], "signature": [ - "string | undefined" + "SavedObject", + "[]" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, - "isRequired": false + "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$2", - "type": "string", + "id": "def-server.SavedObjectsExportError.objectTransformError.$2", + "type": "Object", "tags": [], - "label": "type", - "description": [ - "The type of the saved object before it is converted." - ], + "label": "cause", + "description": [], "signature": [ - "string" + "Error" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true - }, + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsExportError.invalidTransformError", + "type": "Function", + "tags": [], + "label": "invalidTransformError", + "description": [ + "\nError returned when a {@link SavedObjectsExportTransform | export transform} performed an invalid operation\nduring the transform, such as removing objects from the export, or changing an object's type or id." + ], + "signature": [ + "(objectKeys: string[]) => ", + "SavedObjectsExportError" + ], + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$3", - "type": "string", + "id": "def-server.SavedObjectsExportError.invalidTransformError.$1", + "type": "Array", "tags": [], - "label": "id", - "description": [ - "The ID of the saved object before it is converted." - ], + "label": "objectKeys", + "description": [], "signature": [ - "string" + "string[]" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [ - "The ID of the saved object after it is converted." - ] + "returnComment": [] } ], "initialIsOpen": false - } - ], - "functions": [ + }, { "parentPluginId": "core", - "id": "def-server.mergeSavedObjectMigrationMaps", - "type": "Function", + "id": "def-server.SavedObjectsImportError", + "type": "Class", "tags": [], - "label": "mergeSavedObjectMigrationMaps", - "description": [ - "\nMerges two saved object migration maps.\n\nIf there is a migration for a given version on only one of the maps,\nthat migration function will be used:\n\nmergeSavedObjectMigrationMaps({ '1.2.3': f }, { '4.5.6': g }) -> { '1.2.3': f, '4.5.6': g }\n\nIf there is a migration for a given version on both maps, the migrations will be composed:\n\nmergeSavedObjectMigrationMaps({ '1.2.3': f }, { '1.2.3': g }) -> { '1.2.3': (doc, context) => f(g(doc, context), context) }\n" - ], + "label": "SavedObjectsImportError", + "description": [], "signature": [ - "(map1: ", - "SavedObjectMigrationMap", - ", map2: ", - "SavedObjectMigrationMap", - ") => ", - "SavedObjectMigrationMap" + "SavedObjectsImportError", + " extends Error" ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, - "returnComment": [], "children": [ { "parentPluginId": "core", - "id": "def-server.mergeSavedObjectMigrationMaps.$1", - "type": "Object", + "id": "def-server.SavedObjectsImportError.type", + "type": "string", "tags": [], - "label": "map1", + "label": "type", "description": [], - "signature": [ - "SavedObjectMigrationMap" - ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.mergeSavedObjectMigrationMaps.$2", + "id": "def-server.SavedObjectsImportError.attributes", "type": "Object", "tags": [], - "label": "map2", + "label": "attributes", "description": [], "signature": [ - "SavedObjectMigrationMap" - ], - "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.pollEsNodesVersion", - "type": "Function", - "tags": [], - "label": "pollEsNodesVersion", - "description": [], - "signature": [ - "({ internalClient, log, kibanaVersion, ignoreVersionMismatch, esVersionCheckInterval: healthCheckInterval, }: ", - "PollEsNodesVersionOptions", - ") => ", - "Observable", - "<", - "NodesVersionCompatibility", - ">" - ], - "path": "node_modules/@types/kbn__core-elasticsearch-server-internal/index.d.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.pollEsNodesVersion.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - "PollEsNodesVersionOptions" + "Record | undefined" ], - "path": "node_modules/@types/kbn__core-elasticsearch-server-internal/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient", - "type": "Interface", - "tags": [], - "label": "AnalyticsClient", - "description": [ - "\nAnalytics client's public APIs" - ], - "signature": [ - "AnalyticsClient" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.reportEvent", + "id": "def-server.SavedObjectsImportError.importSizeExceeded", "type": "Function", "tags": [], - "label": "reportEvent", - "description": [ - "\nReports a telemetry event." - ], + "label": "importSizeExceeded", + "description": [], "signature": [ - "(eventType: string, eventData: EventTypeData) => void" + "(limit: number) => ", + "SavedObjectsImportError" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.reportEvent.$1", - "type": "string", - "tags": [], - "label": "eventType", - "description": [ - "The event type registered via the `registerEventType` API." - ], - "signature": [ - "string" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient.reportEvent.$2", - "type": "Uncategorized", + "id": "def-server.SavedObjectsImportError.importSizeExceeded.$1", + "type": "number", "tags": [], - "label": "eventData", - "description": [ - "The properties matching the schema declared in the `registerEventType` API." - ], + "label": "limit", + "description": [], "signature": [ - "EventTypeData" + "number" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true } @@ -12069,35 +11993,29 @@ }, { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerEventType", + "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects", "type": "Function", "tags": [], - "label": "registerEventType", - "description": [ - "\nRegisters the event type that will be emitted via the reportEvent API." - ], + "label": "nonUniqueImportObjects", + "description": [], "signature": [ - "(eventTypeOps: ", - "EventTypeOpts", - ") => void" + "(nonUniqueEntries: string[]) => ", + "SavedObjectsImportError" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerEventType.$1", - "type": "Object", + "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects.$1", + "type": "Array", "tags": [], - "label": "eventTypeOps", - "description": [ - "The definition of the event type {@link EventTypeOpts }." - ], + "label": "nonUniqueEntries", + "description": [], "signature": [ - "EventTypeOpts", - "" + "string[]" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true } @@ -12106,108 +12024,60 @@ }, { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerShipper", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects", "type": "Function", "tags": [], - "label": "registerShipper", - "description": [ - "\nSet up the shipper that will be used to report the telemetry events." - ], + "label": "nonUniqueRetryObjects", + "description": [], "signature": [ - "(Shipper: ", - "ShipperClassConstructor", - ", shipperConfig: ShipperConfig, opts?: ", - "RegisterShipperOpts", - " | undefined) => void" + "(nonUniqueRetryObjects: string[]) => ", + "SavedObjectsImportError" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerShipper.$1", - "type": "Object", - "tags": [], - "label": "Shipper", - "description": [ - "The {@link IShipper } class to instantiate the shipper." - ], - "signature": [ - "ShipperClassConstructor", - "" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerShipper.$2", - "type": "Uncategorized", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects.$1", + "type": "Array", "tags": [], - "label": "shipperConfig", - "description": [ - "The config specific to the Shipper to instantiate." - ], + "label": "nonUniqueRetryObjects", + "description": [], "signature": [ - "ShipperConfig" + "string[]" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerShipper.$3", - "type": "Object", - "tags": [], - "label": "opts", - "description": [ - "Additional options to register the shipper {@link RegisterShipperOpts }." - ], - "signature": [ - "RegisterShipperOpts", - " | undefined" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.optIn", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations", "type": "Function", "tags": [], - "label": "optIn", - "description": [ - "\nUsed to control the user's consent to report the data.\nIn the advanced mode, it allows to \"cherry-pick\" which events and shippers are enabled/disabled." - ], + "label": "nonUniqueRetryDestinations", + "description": [], "signature": [ - "(optInConfig: ", - "OptInConfig", - ") => void" + "(nonUniqueRetryDestinations: string[]) => ", + "SavedObjectsImportError" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.optIn.$1", - "type": "Object", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations.$1", + "type": "Array", "tags": [], - "label": "optInConfig", - "description": [ - "{@link OptInConfig }" - ], + "label": "nonUniqueRetryDestinations", + "description": [], "signature": [ - "OptInConfig" + "string[]" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true } @@ -12216,594 +12086,544 @@ }, { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerContextProvider", + "id": "def-server.SavedObjectsImportError.referencesFetchError", "type": "Function", "tags": [], - "label": "registerContextProvider", - "description": [ - "\nRegisters the context provider to enrich the any reported events." - ], + "label": "referencesFetchError", + "description": [], "signature": [ - "(contextProviderOpts: ", - "ContextProviderOpts", - ") => void" + "(objects: ", + "SavedObject", + "[]) => ", + "SavedObjectsImportError" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.registerContextProvider.$1", - "type": "Object", + "id": "def-server.SavedObjectsImportError.referencesFetchError.$1", + "type": "Array", "tags": [], - "label": "contextProviderOpts", - "description": [ - "{@link ContextProviderOpts }" - ], + "label": "objects", + "description": [], "signature": [ - "ContextProviderOpts", - "" + "SavedObject", + "[]" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-import-export-server-internal/index.d.ts", "deprecated": false, "isRequired": true } ], "returnComment": [] - }, + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository", + "type": "Class", + "tags": [], + "label": "SavedObjectsRepository", + "description": [], + "signature": [ + "SavedObjectsRepository", + " implements ", + "ISavedObjectsRepository" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.removeContextProvider", + "id": "def-server.SavedObjectsRepository.create", "type": "Function", "tags": [], - "label": "removeContextProvider", + "label": "create", "description": [ - "\nRemoves the context provider and stop enriching the events from its context." + "\n{@inheritDoc ISavedObjectsRepository.create}" ], "signature": [ - "(contextProviderName: string) => void" + "(type: string, attributes: T, options?: ", + "SavedObjectsCreateOptions", + " | undefined) => Promise<", + "SavedObject", + ">" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AnalyticsClient.removeContextProvider.$1", + "id": "def-server.SavedObjectsRepository.create.$1", "type": "string", "tags": [], - "label": "contextProviderName", - "description": [ - "The name of the context provider to remove." - ], + "label": "type", + "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient.telemetryCounter$", - "type": "Object", - "tags": [], - "label": "telemetryCounter$", - "description": [ - "\nObservable to emit the stats of the processed events." - ], - "signature": [ - "Observable", - "<", - "TelemetryCounter", - ">" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AnalyticsClient.shutdown", - "type": "Function", - "tags": [], - "label": "shutdown", - "description": [ - "\nStops the client." - ], - "signature": [ - "() => void" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory", - "type": "Interface", - "tags": [], - "label": "AppCategory", - "description": [ - "\n\nA category definition for nav links to know where to sort them in the left hand nav" - ], - "path": "src/core/types/app_category.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AppCategory.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nUnique identifier for the categories" - ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory.label", - "type": "string", - "tags": [], - "label": "label", - "description": [ - "\nLabel used for category name.\nAlso used as aria-label if one isn't set." - ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory.ariaLabel", - "type": "string", - "tags": [], - "label": "ariaLabel", - "description": [ - "\nIf the visual label isn't appropriate for screen readers,\ncan override it here" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory.order", - "type": "number", - "tags": [], - "label": "order", - "description": [ - "\nThe order that categories will be sorted in\nPrefer large steps between categories to allow for further editing\n(Default categories are in steps of 1000)" - ], - "signature": [ - "number | undefined" - ], - "path": "src/core/types/app_category.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.AppCategory.euiIconType", - "type": "string", - "tags": [], - "label": "euiIconType", - "description": [ - "\nDefine an icon to be used for the category\nIf the category is only 1 item, and no icon is defined, will default to the product icon\nDefaults to initials if no icon is defined" - ], - "signature": [ - "string | undefined" - ], - "path": "src/core/types/app_category.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "AsyncPlugin", - "description": [ - "\nA plugin with asynchronous lifecycle methods.\n" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.AsyncPlugin", - "text": "AsyncPlugin" - }, - "" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": true, - "removeBy": "8.8.0", - "references": [], - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" }, - ", plugins: TPluginsSetup) => TSetup | Promise" - ], - "path": "src/core/server/plugins/types.ts", - "deprecated": false, - "children": [ { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup.$1", - "type": "Object", + "id": "def-server.SavedObjectsRepository.create.$2", + "type": "Uncategorized", "tags": [], - "label": "core", + "label": "attributes", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "" + "T" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.setup.$2", - "type": "Uncategorized", + "id": "def-server.SavedObjectsRepository.create.$3", + "type": "Object", "tags": [], - "label": "plugins", + "label": "options", "description": [], "signature": [ - "TPluginsSetup" + "SavedObjectsCreateOptions", + " | undefined" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start", + "id": "def-server.SavedObjectsRepository.bulkCreate", "type": "Function", "tags": [], - "label": "start", - "description": [], + "label": "bulkCreate", + "description": [ + "\n{@inheritDoc ISavedObjectsRepository.bulkCreate}" + ], "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - }, - ", plugins: TPluginsStart) => TStart | Promise" + "(objects: ", + "SavedObjectsBulkCreateObject", + "[], options?: ", + "SavedObjectsCreateOptions", + " | undefined) => Promise<", + "SavedObjectsBulkResponse", + ">" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start.$1", - "type": "Object", + "id": "def-server.SavedObjectsRepository.bulkCreate.$1", + "type": "Array", "tags": [], - "label": "core", + "label": "objects", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } + "SavedObjectsBulkCreateObject", + "[]" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.start.$2", - "type": "Uncategorized", + "id": "def-server.SavedObjectsRepository.bulkCreate.$2", + "type": "Object", "tags": [], - "label": "plugins", + "label": "options", "description": [], "signature": [ - "TPluginsStart" + "SavedObjectsCreateOptions", + " | undefined" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AsyncPlugin.stop", + "id": "def-server.SavedObjectsRepository.checkConflicts", "type": "Function", "tags": [], - "label": "stop", - "description": [], + "label": "checkConflicts", + "description": [ + "\n{@inheritDoc ISavedObjectsRepository.checkConflicts}" + ], "signature": [ - "(() => void) | undefined" + "(objects?: ", + "SavedObjectsCheckConflictsObject", + "[] | undefined, options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObjectsCheckConflictsResponse", + ">" ], - "path": "src/core/server/plugins/types.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "children": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.checkConflicts.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObjectsCheckConflictsObject", + "[] | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.checkConflicts.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsBaseOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthRedirectedParams", - "type": "Interface", - "tags": [], - "label": "AuthRedirectedParams", - "description": [ - "\nResult of auth redirection." - ], - "signature": [ - "AuthRedirectedParams" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.AuthRedirectedParams.headers", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.delete", + "type": "Function", "tags": [], - "label": "headers", + "label": "delete", "description": [ - "\nHeaders to attach for auth redirect.\nMust include \"location\" header" + "\n{@inheritDoc ISavedObjectsRepository.delete}" ], "signature": [ - "{ location: string; } & ", - "ResponseHeaders" + "(type: string, id: string, options?: ", + "SavedObjectsDeleteOptions", + " | undefined) => Promise<{}>" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthResultAuthenticated", - "type": "Interface", - "tags": [], - "label": "AuthResultAuthenticated", - "description": [], - "signature": [ - "AuthResultAuthenticated", - " extends ", - "AuthResultParams" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AuthResultAuthenticated.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "AuthResultType", - ".authenticated" + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.delete.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.delete.$2", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.delete.$3", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsDeleteOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthResultNotHandled", - "type": "Interface", - "tags": [], - "label": "AuthResultNotHandled", - "description": [], - "signature": [ - "AuthResultNotHandled" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ + "returnComment": [] + }, { "parentPluginId": "core", - "id": "def-server.AuthResultNotHandled.type", - "type": "string", + "id": "def-server.SavedObjectsRepository.deleteByNamespace", + "type": "Function", "tags": [], - "label": "type", - "description": [], + "label": "deleteByNamespace", + "description": [ + "\n{@inheritDoc ISavedObjectsRepository.deleteByNamespace}" + ], "signature": [ - "AuthResultType", - ".notHandled" + "(namespace: string, options?: ", + "SavedObjectsDeleteByNamespaceOptions", + " | undefined) => Promise" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthResultParams", - "type": "Interface", - "tags": [], - "label": "AuthResultParams", - "description": [ - "\nResult of successful authentication." - ], - "signature": [ - "AuthResultParams" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.deleteByNamespace.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.deleteByNamespace.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsDeleteByNamespaceOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, { "parentPluginId": "core", - "id": "def-server.AuthResultParams.state", - "type": "Object", + "id": "def-server.SavedObjectsRepository.find", + "type": "Function", "tags": [], - "label": "state", + "label": "find", "description": [ - "\nData to associate with an incoming request. Any downstream plugin may get access to the data." + "\n{@inheritDoc ISavedObjectsRepository.find}" ], "signature": [ - "Record | undefined" + "(options: ", + "SavedObjectsFindOptions", + ") => Promise<", + "SavedObjectsFindResponse", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.find.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsFindOptions" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AuthResultParams.requestHeaders", - "type": "Object", + "id": "def-server.SavedObjectsRepository.bulkGet", + "type": "Function", "tags": [], - "label": "requestHeaders", + "label": "bulkGet", "description": [ - "\nAuth specific headers to attach to a request object.\nUsed to perform a request to Elasticsearch on behalf of an authenticated user." + "\n{@inheritDoc ISavedObjectsRepository.bulkGet}" ], "signature": [ - "AuthHeaders", - " | undefined" + "(objects?: ", + "SavedObjectsBulkGetObject", + "[] | undefined, options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObjectsBulkResponse", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.bulkGet.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObjectsBulkGetObject", + "[] | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.bulkGet.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsBaseOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AuthResultParams.responseHeaders", - "type": "Object", + "id": "def-server.SavedObjectsRepository.bulkResolve", + "type": "Function", "tags": [], - "label": "responseHeaders", + "label": "bulkResolve", "description": [ - "\nAuth specific headers to attach to a response object.\nUsed to send back authentication mechanism related headers to a client when needed." + "\n{@inheritDoc ISavedObjectsRepository.bulkResolve}" ], "signature": [ - "AuthHeaders", - " | undefined" + "(objects: ", + "SavedObjectsBulkResolveObject", + "[], options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObjectsBulkResolveResponse", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthResultRedirected", - "type": "Interface", - "tags": [], - "label": "AuthResultRedirected", - "description": [], - "signature": [ - "AuthResultRedirected", - " extends ", - "AuthRedirectedParams" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.AuthResultRedirected.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "AuthResultType", - ".redirected" + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.bulkResolve.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObjectsBulkResolveObject", + "[]" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.bulkResolve.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsBaseOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.AuthToolkit", - "type": "Interface", - "tags": [], - "label": "AuthToolkit", - "description": [], - "signature": [ - "AuthToolkit" - ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", - "deprecated": false, - "children": [ + "returnComment": [] + }, { "parentPluginId": "core", - "id": "def-server.AuthToolkit.authenticated", + "id": "def-server.SavedObjectsRepository.get", "type": "Function", "tags": [], - "label": "authenticated", + "label": "get", "description": [ - "Authentication is successful with given credentials, allow request to pass through" + "\n{@inheritDoc ISavedObjectsRepository.get}" ], "signature": [ - "(data?: ", - "AuthResultParams", - " | undefined) => ", - "AuthResult" + "(type: string, id: string, options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObject", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AuthToolkit.authenticated.$1", + "id": "def-server.SavedObjectsRepository.get.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.get.$2", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.get.$3", "type": "Object", "tags": [], - "label": "data", + "label": "options", "description": [], "signature": [ - "AuthResultParams", + "SavedObjectsBaseOptions", " | undefined" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": false } @@ -12812,1467 +12632,5152 @@ }, { "parentPluginId": "core", - "id": "def-server.AuthToolkit.notHandled", + "id": "def-server.SavedObjectsRepository.resolve", "type": "Function", "tags": [], - "label": "notHandled", + "label": "resolve", "description": [ - "\nUser has no credentials.\nAllows user to access a resource when authRequired is 'optional'\nRejects a request when authRequired: true" + "\n{@inheritDoc ISavedObjectsRepository.resolve}" ], "signature": [ - "() => ", - "AuthResult" + "(type: string, id: string, options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObjectsResolveResponse", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "children": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.resolve.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.resolve.$2", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.resolve.$3", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsBaseOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.AuthToolkit.redirected", + "id": "def-server.SavedObjectsRepository.update", "type": "Function", "tags": [], - "label": "redirected", + "label": "update", "description": [ - "\nRedirects user to another location to complete authentication when authRequired: true\nAllows user to access a resource without redirection when authRequired: 'optional'" + "\n{@inheritDoc ISavedObjectsRepository.update}" ], "signature": [ - "(headers: { location: string; } & ", - "ResponseHeaders", - ") => ", - "AuthResult" + "(type: string, id: string, attributes: Partial, options?: ", + "SavedObjectsUpdateOptions", + " | undefined) => Promise<", + "SavedObjectsUpdateResponse", + ">" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.AuthToolkit.redirected.$1", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.update.$1", + "type": "string", "tags": [], - "label": "headers", + "label": "type", "description": [], "signature": [ - "{ location: string; } & ", - "ResponseHeaders" + "string" ], - "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.Capabilities", - "type": "Interface", - "tags": [], - "label": "Capabilities", - "description": [ - "\nThe read-only set of capabilities available for the current UI session.\nCapabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID,\nand the boolean is a flag indicating if the capability is enabled or disabled.\n" - ], - "signature": [ - "Capabilities" - ], - "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.Capabilities.navLinks", - "type": "Object", - "tags": [], - "label": "navLinks", - "description": [ - "Navigation link capabilities." - ], - "signature": [ - "{ [x: string]: boolean; }" - ], - "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.Capabilities.management", - "type": "Object", - "tags": [], - "label": "management", - "description": [ - "Management section capabilities." - ], - "signature": [ - "{ [sectionId: string]: Record; }" - ], - "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.Capabilities.catalogue", - "type": "Object", - "tags": [], - "label": "catalogue", - "description": [ - "Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options." - ], - "signature": [ - "{ [x: string]: boolean; }" - ], - "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.Capabilities.Unnamed", - "type": "IndexSignature", - "tags": [], - "label": "[key: string]: Record>", - "description": [ - "Custom capabilities, registered by plugins." - ], - "signature": [ - "[key: string]: Record>" - ], - "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup", - "type": "Interface", - "tags": [], - "label": "CapabilitiesSetup", - "description": [ - "\nAPIs to manage the {@link Capabilities} that will be used by the application.\n\nPlugins relying on capabilities to toggle some of their features should register them during the setup phase\nusing the `registerProvider` method.\n\nPlugins having the responsibility to restrict capabilities depending on a given context should register\ntheir capabilities switcher using the `registerSwitcher` method.\n\nRefers to the methods documentation for complete description and examples.\n" - ], - "signature": [ - "CapabilitiesSetup" - ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerProvider", - "type": "Function", - "tags": [], - "label": "registerProvider", - "description": [ - "\nRegister a {@link CapabilitiesProvider} to be used to provide {@link Capabilities}\nwhen resolving them.\n" - ], - "signature": [ - "(provider: ", - "CapabilitiesProvider", - ") => void" - ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerProvider.$1", - "type": "Function", + "id": "def-server.SavedObjectsRepository.update.$2", + "type": "string", "tags": [], - "label": "provider", + "label": "id", "description": [], "signature": [ - "CapabilitiesProvider" + "string" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.update.$3", + "type": "Object", + "tags": [], + "label": "attributes", + "description": [], + "signature": [ + "Partial" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.update.$4", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsUpdateOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerSwitcher", + "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences", "type": "Function", "tags": [], - "label": "registerSwitcher", + "label": "collectMultiNamespaceReferences", "description": [ - "\nRegister a {@link CapabilitiesSwitcher} to be used to change the default state\nof the {@link Capabilities} entries when resolving them.\n\nA capabilities switcher can only change the state of existing capabilities.\nCapabilities added or removed when invoking the switcher will be ignored.\n" + "\n{@inheritDoc ISavedObjectsRepository.collectMultiNamespaceReferences}" ], "signature": [ - "(switcher: ", - "CapabilitiesSwitcher", - ") => void" + "(objects: ", + "SavedObjectsCollectMultiNamespaceReferencesObject", + "[], options?: ", + "SavedObjectsCollectMultiNamespaceReferencesOptions", + " | undefined) => Promise<", + "SavedObjectsCollectMultiNamespaceReferencesResponse", + ">" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CapabilitiesSetup.registerSwitcher.$1", - "type": "Function", + "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences.$1", + "type": "Array", "tags": [], - "label": "switcher", + "label": "objects", "description": [], "signature": [ - "CapabilitiesSwitcher" + "SavedObjectsCollectMultiNamespaceReferencesObject", + "[]" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsCollectMultiNamespaceReferencesOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CapabilitiesStart", - "type": "Interface", - "tags": [], - "label": "CapabilitiesStart", - "description": [ - "\nAPIs to access the application {@link Capabilities}.\n" - ], - "signature": [ - "CapabilitiesStart" - ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities", + "id": "def-server.SavedObjectsRepository.updateObjectsSpaces", "type": "Function", "tags": [], - "label": "resolveCapabilities", + "label": "updateObjectsSpaces", "description": [ - "\nResolve the {@link Capabilities} to be used for given request" + "\n{@inheritDoc ISavedObjectsRepository.updateObjectsSpaces}" ], "signature": [ - "(request: ", - "KibanaRequest", - ", options?: ", - "ResolveCapabilitiesOptions", + "(objects: ", + "SavedObjectsUpdateObjectsSpacesObject", + "[], spacesToAdd: string[], spacesToRemove: string[], options?: ", + "SavedObjectsUpdateObjectsSpacesOptions", " | undefined) => Promise<", - "Capabilities", + "SavedObjectsUpdateObjectsSpacesResponse", ">" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities.$1", - "type": "Object", + "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$1", + "type": "Array", "tags": [], - "label": "request", + "label": "objects", "description": [], "signature": [ - "KibanaRequest", - "" + "SavedObjectsUpdateObjectsSpacesObject", + "[]" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.CapabilitiesStart.resolveCapabilities.$2", - "type": "Object", + "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$2", + "type": "Array", "tags": [], - "label": "options", + "label": "spacesToAdd", "description": [], "signature": [ - "ResolveCapabilitiesOptions", - " | undefined" + "string[]" ], - "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationContext", - "type": "Interface", - "tags": [], - "label": "ConfigDeprecationContext", - "description": [ - "\nDeprecation context provided to {@link ConfigDeprecation | config deprecations}\n" - ], - "signature": [ - "ConfigDeprecationContext" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationContext.version", - "type": "string", - "tags": [], - "label": "version", - "description": [ - "The current Kibana version, e.g `7.16.1`, `8.0.0`" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationContext.branch", - "type": "string", - "tags": [], - "label": "branch", - "description": [ - "The current Kibana branch, e.g `7.x`, `7.16`, `master`" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationContext.docLinks", - "type": "Object", - "tags": [], - "label": "docLinks", - "description": [ - "Allow direct access to the doc links from the deprecation handler" - ], - "signature": [ - "DocLinks" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory", - "type": "Interface", - "tags": [], - "label": "ConfigDeprecationFactory", - "description": [ - "\nProvides helpers to generates the most commonly used {@link ConfigDeprecation}\nwhen invoking a {@link ConfigDeprecationProvider}.\n\nSee methods documentation for more detailed examples.\n" - ], - "signature": [ - "ConfigDeprecationFactory" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecate", - "type": "Function", - "tags": [], - "label": "deprecate", - "description": [ - "\nDeprecate a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the deprecatedKey was found.\n" - ], - "signature": [ - "(deprecatedKey: string, removeBy: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecate.$1", - "type": "string", - "tags": [], - "label": "deprecatedKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecate.$2", - "type": "string", + "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$3", + "type": "Array", "tags": [], - "label": "removeBy", + "label": "spacesToRemove", "description": [], "signature": [ - "string" + "string[]" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecate.$3", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$4", + "type": "Object", "tags": [], - "label": "details", + "label": "options", "description": [], "signature": [ - "FactoryConfigDeprecationDetails" + "SavedObjectsUpdateObjectsSpacesOptions", + " | undefined" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot", + "id": "def-server.SavedObjectsRepository.bulkUpdate", "type": "Function", "tags": [], - "label": "deprecateFromRoot", + "label": "bulkUpdate", "description": [ - "\nDeprecate a configuration property from the root configuration.\nWill log a deprecation warning if the deprecatedKey was found.\n\nThis should be only used when deprecating properties from different configuration's path.\nTo deprecate properties from inside a plugin's configuration, use 'deprecate' instead.\n" + "\n{@inheritDoc ISavedObjectsRepository.bulkUpdate}" ], "signature": [ - "(deprecatedKey: string, removeBy: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" + "(objects: ", + "SavedObjectsBulkUpdateObject", + "[], options?: ", + "SavedObjectsBulkUpdateOptions", + " | undefined) => Promise<", + "SavedObjectsBulkUpdateResponse", + ">" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$1", - "type": "string", - "tags": [], - "label": "deprecatedKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$2", - "type": "string", + "id": "def-server.SavedObjectsRepository.bulkUpdate.$1", + "type": "Array", "tags": [], - "label": "removeBy", + "label": "objects", "description": [], "signature": [ - "string" + "SavedObjectsBulkUpdateObject", + "[]" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$3", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.bulkUpdate.$2", + "type": "Object", "tags": [], - "label": "details", + "label": "options", "description": [], "signature": [ - "FactoryConfigDeprecationDetails" + "SavedObjectsBulkUpdateOptions", + " | undefined" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename", + "id": "def-server.SavedObjectsRepository.removeReferencesTo", "type": "Function", "tags": [], - "label": "rename", + "label": "removeReferencesTo", "description": [ - "\nRename a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n" + "\n{@inheritDoc ISavedObjectsRepository.removeReferencesTo}" ], "signature": [ - "(oldKey: string, newKey: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" + "(type: string, id: string, options?: ", + "SavedObjectsRemoveReferencesToOptions", + " | undefined) => Promise<", + "SavedObjectsRemoveReferencesToResponse", + ">" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$1", + "id": "def-server.SavedObjectsRepository.removeReferencesTo.$1", "type": "string", "tags": [], - "label": "oldKey", + "label": "type", "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$2", + "id": "def-server.SavedObjectsRepository.removeReferencesTo.$2", "type": "string", "tags": [], - "label": "newKey", + "label": "id", "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.rename.$3", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.removeReferencesTo.$3", + "type": "Object", "tags": [], - "label": "details", + "label": "options", "description": [], "signature": [ - "FactoryConfigDeprecationDetails" + "SavedObjectsRemoveReferencesToOptions", + " | undefined" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot", + "id": "def-server.SavedObjectsRepository.incrementCounter", "type": "Function", "tags": [], - "label": "renameFromRoot", + "label": "incrementCounter", "description": [ - "\nRename a configuration property from the root configuration.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n\nThis should be only used when renaming properties from different configuration's path.\nTo rename properties from inside a plugin's configuration, use 'rename' instead.\n" + "\n{@inheritDoc ISavedObjectsRepository.incrementCounter}" ], "signature": [ - "(oldKey: string, newKey: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" + "(type: string, id: string, counterFields: (string | ", + "SavedObjectsIncrementCounterField", + ")[], options?: ", + "SavedObjectsIncrementCounterOptions", + " | undefined) => Promise<", + "SavedObject", + ">" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$1", + "id": "def-server.SavedObjectsRepository.incrementCounter.$1", "type": "string", "tags": [], - "label": "oldKey", + "label": "type", "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$2", + "id": "def-server.SavedObjectsRepository.incrementCounter.$2", "type": "string", "tags": [], - "label": "newKey", + "label": "id", "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$3", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.incrementCounter.$3", + "type": "Array", "tags": [], - "label": "details", + "label": "counterFields", "description": [], "signature": [ - "FactoryConfigDeprecationDetails" + "(string | ", + "SavedObjectsIncrementCounterField", + ")[]" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.incrementCounter.$4", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "SavedObjectsIncrementCounterOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused", + "id": "def-server.SavedObjectsRepository.openPointInTimeForType", "type": "Function", "tags": [], - "label": "unused", + "label": "openPointInTimeForType", "description": [ - "\nRemove a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n" + "\n{@inheritDoc ISavedObjectsRepository.openPointInTimeForType}" ], "signature": [ - "(unusedKey: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" + "(type: string | string[], { keepAlive, preference }?: ", + "SavedObjectsOpenPointInTimeOptions", + " | undefined) => Promise<", + "SavedObjectsOpenPointInTimeResponse", + ">" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "children": [ { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused.$1", + "id": "def-server.SavedObjectsRepository.openPointInTimeForType.$1", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | string[]" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.openPointInTimeForType.$2", + "type": "Object", + "tags": [], + "label": "{ keepAlive, preference }", + "description": [], + "signature": [ + "SavedObjectsOpenPointInTimeOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.closePointInTime", + "type": "Function", + "tags": [], + "label": "closePointInTime", + "description": [ + "\n{@inheritDoc ISavedObjectsRepository.closePointInTime}" + ], + "signature": [ + "(id: string, options?: ", + "SavedObjectsBaseOptions", + " | undefined) => Promise<", + "SavedObjectsClosePointInTimeResponse", + ">" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.closePointInTime.$1", "type": "string", "tags": [], - "label": "unusedKey", + "label": "id", "description": [], "signature": [ "string" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unused.$2", - "type": "CompoundType", + "id": "def-server.SavedObjectsRepository.closePointInTime.$2", + "type": "Object", "tags": [], - "label": "details", + "label": "options", "description": [], "signature": [ - "FactoryConfigDeprecationDetails" + "SavedObjectsBaseOptions", + " | undefined" ], - "path": "node_modules/@types/kbn__config/index.d.ts", + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.createPointInTimeFinder", + "type": "Function", + "tags": [], + "label": "createPointInTimeFinder", + "description": [ + "\n{@inheritDoc ISavedObjectsRepository.createPointInTimeFinder}" + ], + "signature": [ + "(findOptions: ", + "SavedObjectsCreatePointInTimeFinderOptions", + ", dependencies?: ", + "SavedObjectsCreatePointInTimeFinderDependencies", + " | undefined) => ", + "ISavedObjectsPointInTimeFinder", + "" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.createPointInTimeFinder.$1", + "type": "Object", + "tags": [], + "label": "findOptions", + "description": [], + "signature": [ + "SavedObjectsCreatePointInTimeFinderOptions" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsRepository.createPointInTimeFinder.$2", + "type": "Object", + "tags": [], + "label": "dependencies", + "description": [], + "signature": [ + "SavedObjectsCreatePointInTimeFinderDependencies", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-api-server-internal/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils", + "type": "Class", + "tags": [], + "label": "SavedObjectsUtils", + "description": [], + "signature": [ + "SavedObjectsUtils" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.namespaceIdToString", + "type": "Function", + "tags": [], + "label": "namespaceIdToString", + "description": [ + "\nConverts a given saved object namespace ID to its string representation. All namespace IDs have an identical string representation, with\nthe exception of the `undefined` namespace ID (which has a namespace string of `'default'`).\n" + ], + "signature": [ + "(namespace?: string | undefined) => string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.namespaceIdToString.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "The namespace ID, which must be either a non-empty string or `undefined`." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.namespaceStringToId", + "type": "Function", + "tags": [], + "label": "namespaceStringToId", + "description": [ + "\nConverts a given saved object namespace string to its ID representation. All namespace strings have an identical ID representation, with\nthe exception of the `'default'` namespace string (which has a namespace ID of `undefined`).\n" + ], + "signature": [ + "(namespace: string) => string | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.namespaceStringToId.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "The namespace string, which must be non-empty." + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.createEmptyFindResponse", + "type": "Function", + "tags": [], + "label": "createEmptyFindResponse", + "description": [ + "\nCreates an empty response for a find operation. This is only intended to be used by saved objects client wrappers." + ], + "signature": [ + "({ page, perPage, }: ", + "SavedObjectsFindOptions", + ") => ", + "SavedObjectsFindResponse", + "" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.createEmptyFindResponse.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "SavedObjectsFindOptions" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false } + ] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.generateId", + "type": "Function", + "tags": [], + "label": "generateId", + "description": [ + "\nGenerates a random ID for a saved objects." + ], + "signature": [ + "() => string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.isRandomId", + "type": "Function", + "tags": [ + "todo" + ], + "label": "isRandomId", + "description": [ + "\nValidates that a saved object ID has been randomly generated.\n" + ], + "signature": [ + "(id: string | undefined) => boolean" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.isRandomId.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "The ID of a saved object." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId", + "type": "Function", + "tags": [], + "label": "getConvertedObjectId", + "description": [ + "\nUses a single-namespace object's \"legacy ID\" to determine what its new ID will be after it is converted to a multi-namespace type.\n" + ], + "signature": [ + "(namespace: string | undefined, type: string, id: string) => string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$1", + "type": "string", + "tags": [], + "label": "namespace", + "description": [ + "The namespace of the saved object before it is converted." + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$2", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "The type of the saved object before it is converted." + ], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.SavedObjectsUtils.getConvertedObjectId.$3", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "The ID of the saved object before it is converted." + ], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "The ID of the saved object after it is converted." + ] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "core", + "id": "def-server.mergeSavedObjectMigrationMaps", + "type": "Function", + "tags": [], + "label": "mergeSavedObjectMigrationMaps", + "description": [ + "\nMerges two saved object migration maps.\n\nIf there is a migration for a given version on only one of the maps,\nthat migration function will be used:\n\nmergeSavedObjectMigrationMaps({ '1.2.3': f }, { '4.5.6': g }) -> { '1.2.3': f, '4.5.6': g }\n\nIf there is a migration for a given version on both maps, the migrations will be composed:\n\nmergeSavedObjectMigrationMaps({ '1.2.3': f }, { '1.2.3': g }) -> { '1.2.3': (doc, context) => f(g(doc, context), context) }\n" + ], + "signature": [ + "(map1: ", + "SavedObjectMigrationMap", + ", map2: ", + "SavedObjectMigrationMap", + ") => ", + "SavedObjectMigrationMap" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.mergeSavedObjectMigrationMaps.$1", + "type": "Object", + "tags": [], + "label": "map1", + "description": [], + "signature": [ + "SavedObjectMigrationMap" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.mergeSavedObjectMigrationMaps.$2", + "type": "Object", + "tags": [], + "label": "map2", + "description": [], + "signature": [ + "SavedObjectMigrationMap" + ], + "path": "node_modules/@types/kbn__core-saved-objects-utils-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.pollEsNodesVersion", + "type": "Function", + "tags": [], + "label": "pollEsNodesVersion", + "description": [], + "signature": [ + "({ internalClient, log, kibanaVersion, ignoreVersionMismatch, esVersionCheckInterval: healthCheckInterval, }: ", + "PollEsNodesVersionOptions", + ") => ", + "Observable", + "<", + "NodesVersionCompatibility", + ">" + ], + "path": "node_modules/@types/kbn__core-elasticsearch-server-internal/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.pollEsNodesVersion.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "PollEsNodesVersionOptions" + ], + "path": "node_modules/@types/kbn__core-elasticsearch-server-internal/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient", + "type": "Interface", + "tags": [], + "label": "AnalyticsClient", + "description": [ + "\nAnalytics client's public APIs" + ], + "signature": [ + "AnalyticsClient" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.reportEvent", + "type": "Function", + "tags": [], + "label": "reportEvent", + "description": [ + "\nReports a telemetry event." + ], + "signature": [ + "(eventType: string, eventData: EventTypeData) => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.reportEvent.$1", + "type": "string", + "tags": [], + "label": "eventType", + "description": [ + "The event type registered via the `registerEventType` API." + ], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.reportEvent.$2", + "type": "Uncategorized", + "tags": [], + "label": "eventData", + "description": [ + "The properties matching the schema declared in the `registerEventType` API." + ], + "signature": [ + "EventTypeData" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerEventType", + "type": "Function", + "tags": [], + "label": "registerEventType", + "description": [ + "\nRegisters the event type that will be emitted via the reportEvent API." + ], + "signature": [ + "(eventTypeOps: ", + "EventTypeOpts", + ") => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerEventType.$1", + "type": "Object", + "tags": [], + "label": "eventTypeOps", + "description": [ + "The definition of the event type {@link EventTypeOpts }." + ], + "signature": [ + "EventTypeOpts", + "" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerShipper", + "type": "Function", + "tags": [], + "label": "registerShipper", + "description": [ + "\nSet up the shipper that will be used to report the telemetry events." + ], + "signature": [ + "(Shipper: ", + "ShipperClassConstructor", + ", shipperConfig: ShipperConfig, opts?: ", + "RegisterShipperOpts", + " | undefined) => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerShipper.$1", + "type": "Object", + "tags": [], + "label": "Shipper", + "description": [ + "The {@link IShipper } class to instantiate the shipper." + ], + "signature": [ + "ShipperClassConstructor", + "" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerShipper.$2", + "type": "Uncategorized", + "tags": [], + "label": "shipperConfig", + "description": [ + "The config specific to the Shipper to instantiate." + ], + "signature": [ + "ShipperConfig" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerShipper.$3", + "type": "Object", + "tags": [], + "label": "opts", + "description": [ + "Additional options to register the shipper {@link RegisterShipperOpts }." + ], + "signature": [ + "RegisterShipperOpts", + " | undefined" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.optIn", + "type": "Function", + "tags": [], + "label": "optIn", + "description": [ + "\nUsed to control the user's consent to report the data.\nIn the advanced mode, it allows to \"cherry-pick\" which events and shippers are enabled/disabled." + ], + "signature": [ + "(optInConfig: ", + "OptInConfig", + ") => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.optIn.$1", + "type": "Object", + "tags": [], + "label": "optInConfig", + "description": [ + "{@link OptInConfig }" + ], + "signature": [ + "OptInConfig" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerContextProvider", + "type": "Function", + "tags": [], + "label": "registerContextProvider", + "description": [ + "\nRegisters the context provider to enrich the any reported events." + ], + "signature": [ + "(contextProviderOpts: ", + "ContextProviderOpts", + ") => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.registerContextProvider.$1", + "type": "Object", + "tags": [], + "label": "contextProviderOpts", + "description": [ + "{@link ContextProviderOpts }" + ], + "signature": [ + "ContextProviderOpts", + "" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.removeContextProvider", + "type": "Function", + "tags": [], + "label": "removeContextProvider", + "description": [ + "\nRemoves the context provider and stop enriching the events from its context." + ], + "signature": [ + "(contextProviderName: string) => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.removeContextProvider.$1", + "type": "string", + "tags": [], + "label": "contextProviderName", + "description": [ + "The name of the context provider to remove." + ], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.telemetryCounter$", + "type": "Object", + "tags": [], + "label": "telemetryCounter$", + "description": [ + "\nObservable to emit the stats of the processed events." + ], + "signature": [ + "Observable", + "<", + "TelemetryCounter", + ">" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AnalyticsClient.shutdown", + "type": "Function", + "tags": [], + "label": "shutdown", + "description": [ + "\nStops the client." + ], + "signature": [ + "() => void" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory", + "type": "Interface", + "tags": [], + "label": "AppCategory", + "description": [ + "\n\nA category definition for nav links to know where to sort them in the left hand nav" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AppCategory.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nUnique identifier for the categories" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.label", + "type": "string", + "tags": [], + "label": "label", + "description": [ + "\nLabel used for category name.\nAlso used as aria-label if one isn't set." + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.ariaLabel", + "type": "string", + "tags": [], + "label": "ariaLabel", + "description": [ + "\nIf the visual label isn't appropriate for screen readers,\ncan override it here" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.order", + "type": "number", + "tags": [], + "label": "order", + "description": [ + "\nThe order that categories will be sorted in\nPrefer large steps between categories to allow for further editing\n(Default categories are in steps of 1000)" + ], + "signature": [ + "number | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AppCategory.euiIconType", + "type": "string", + "tags": [], + "label": "euiIconType", + "description": [ + "\nDefine an icon to be used for the category\nIf the category is only 1 item, and no icon is defined, will default to the product icon\nDefaults to initials if no icon is defined" + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/app_category.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin", + "type": "Interface", + "tags": [ + "deprecated" + ], + "label": "AsyncPlugin", + "description": [ + "\nA plugin with asynchronous lifecycle methods.\n" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.AsyncPlugin", + "text": "AsyncPlugin" + }, + "" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": true, + "removeBy": "8.8.0", + "references": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + ", plugins: TPluginsSetup) => TSetup | Promise" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.setup.$1", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.setup.$2", + "type": "Uncategorized", + "tags": [], + "label": "plugins", + "description": [], + "signature": [ + "TPluginsSetup" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "(core: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + }, + ", plugins: TPluginsStart) => TStart | Promise" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.start.$1", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + } + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.start.$2", + "type": "Uncategorized", + "tags": [], + "label": "plugins", + "description": [], + "signature": [ + "TPluginsStart" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AsyncPlugin.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "src/core/server/plugins/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthRedirectedParams", + "type": "Interface", + "tags": [], + "label": "AuthRedirectedParams", + "description": [ + "\nResult of auth redirection." + ], + "signature": [ + "AuthRedirectedParams" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthRedirectedParams.headers", + "type": "CompoundType", + "tags": [], + "label": "headers", + "description": [ + "\nHeaders to attach for auth redirect.\nMust include \"location\" header" + ], + "signature": [ + "{ location: string; } & ", + "ResponseHeaders" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultAuthenticated", + "type": "Interface", + "tags": [], + "label": "AuthResultAuthenticated", + "description": [], + "signature": [ + "AuthResultAuthenticated", + " extends ", + "AuthResultParams" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthResultAuthenticated.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "AuthResultType", + ".authenticated" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultNotHandled", + "type": "Interface", + "tags": [], + "label": "AuthResultNotHandled", + "description": [], + "signature": [ + "AuthResultNotHandled" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthResultNotHandled.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "AuthResultType", + ".notHandled" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultParams", + "type": "Interface", + "tags": [], + "label": "AuthResultParams", + "description": [ + "\nResult of successful authentication." + ], + "signature": [ + "AuthResultParams" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthResultParams.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [ + "\nData to associate with an incoming request. Any downstream plugin may get access to the data." + ], + "signature": [ + "Record | undefined" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultParams.requestHeaders", + "type": "Object", + "tags": [], + "label": "requestHeaders", + "description": [ + "\nAuth specific headers to attach to a request object.\nUsed to perform a request to Elasticsearch on behalf of an authenticated user." + ], + "signature": [ + "AuthHeaders", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultParams.responseHeaders", + "type": "Object", + "tags": [], + "label": "responseHeaders", + "description": [ + "\nAuth specific headers to attach to a response object.\nUsed to send back authentication mechanism related headers to a client when needed." + ], + "signature": [ + "AuthHeaders", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthResultRedirected", + "type": "Interface", + "tags": [], + "label": "AuthResultRedirected", + "description": [], + "signature": [ + "AuthResultRedirected", + " extends ", + "AuthRedirectedParams" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthResultRedirected.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "AuthResultType", + ".redirected" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit", + "type": "Interface", + "tags": [], + "label": "AuthToolkit", + "description": [], + "signature": [ + "AuthToolkit" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit.authenticated", + "type": "Function", + "tags": [], + "label": "authenticated", + "description": [ + "Authentication is successful with given credentials, allow request to pass through" + ], + "signature": [ + "(data?: ", + "AuthResultParams", + " | undefined) => ", + "AuthResult" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit.authenticated.$1", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "AuthResultParams", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit.notHandled", + "type": "Function", + "tags": [], + "label": "notHandled", + "description": [ + "\nUser has no credentials.\nAllows user to access a resource when authRequired is 'optional'\nRejects a request when authRequired: true" + ], + "signature": [ + "() => ", + "AuthResult" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit.redirected", + "type": "Function", + "tags": [], + "label": "redirected", + "description": [ + "\nRedirects user to another location to complete authentication when authRequired: true\nAllows user to access a resource without redirection when authRequired: 'optional'" + ], + "signature": [ + "(headers: { location: string; } & ", + "ResponseHeaders", + ") => ", + "AuthResult" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.AuthToolkit.redirected.$1", + "type": "CompoundType", + "tags": [], + "label": "headers", + "description": [], + "signature": [ + "{ location: string; } & ", + "ResponseHeaders" + ], + "path": "node_modules/@types/kbn__core-http-server/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities", + "type": "Interface", + "tags": [], + "label": "Capabilities", + "description": [ + "\nThe read-only set of capabilities available for the current UI session.\nCapabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID,\nand the boolean is a flag indicating if the capability is enabled or disabled.\n" + ], + "signature": [ + "Capabilities" + ], + "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.Capabilities.navLinks", + "type": "Object", + "tags": [], + "label": "navLinks", + "description": [ + "Navigation link capabilities." + ], + "signature": [ + "{ [x: string]: boolean; }" + ], + "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities.management", + "type": "Object", + "tags": [], + "label": "management", + "description": [ + "Management section capabilities." + ], + "signature": [ + "{ [sectionId: string]: Record; }" + ], + "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities.catalogue", + "type": "Object", + "tags": [], + "label": "catalogue", + "description": [ + "Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options." + ], + "signature": [ + "{ [x: string]: boolean; }" + ], + "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.Capabilities.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[key: string]: Record>", + "description": [ + "Custom capabilities, registered by plugins." + ], + "signature": [ + "[key: string]: Record>" + ], + "path": "node_modules/@types/kbn__core-capabilities-common/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesSetup", + "type": "Interface", + "tags": [], + "label": "CapabilitiesSetup", + "description": [ + "\nAPIs to manage the {@link Capabilities} that will be used by the application.\n\nPlugins relying on capabilities to toggle some of their features should register them during the setup phase\nusing the `registerProvider` method.\n\nPlugins having the responsibility to restrict capabilities depending on a given context should register\ntheir capabilities switcher using the `registerSwitcher` method.\n\nRefers to the methods documentation for complete description and examples.\n" + ], + "signature": [ + "CapabilitiesSetup" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesSetup.registerProvider", + "type": "Function", + "tags": [], + "label": "registerProvider", + "description": [ + "\nRegister a {@link CapabilitiesProvider} to be used to provide {@link Capabilities}\nwhen resolving them.\n" + ], + "signature": [ + "(provider: ", + "CapabilitiesProvider", + ") => void" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesSetup.registerProvider.$1", + "type": "Function", + "tags": [], + "label": "provider", + "description": [], + "signature": [ + "CapabilitiesProvider" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesSetup.registerSwitcher", + "type": "Function", + "tags": [], + "label": "registerSwitcher", + "description": [ + "\nRegister a {@link CapabilitiesSwitcher} to be used to change the default state\nof the {@link Capabilities} entries when resolving them.\n\nA capabilities switcher can only change the state of existing capabilities.\nCapabilities added or removed when invoking the switcher will be ignored.\n" + ], + "signature": [ + "(switcher: ", + "CapabilitiesSwitcher", + ") => void" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesSetup.registerSwitcher.$1", + "type": "Function", + "tags": [], + "label": "switcher", + "description": [], + "signature": [ + "CapabilitiesSwitcher" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesStart", + "type": "Interface", + "tags": [], + "label": "CapabilitiesStart", + "description": [ + "\nAPIs to access the application {@link Capabilities}.\n" + ], + "signature": [ + "CapabilitiesStart" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesStart.resolveCapabilities", + "type": "Function", + "tags": [], + "label": "resolveCapabilities", + "description": [ + "\nResolve the {@link Capabilities} to be used for given request" + ], + "signature": [ + "(request: ", + "KibanaRequest", + ", options?: ", + "ResolveCapabilitiesOptions", + " | undefined) => Promise<", + "Capabilities", + ">" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesStart.resolveCapabilities.$1", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + "KibanaRequest", + "" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.CapabilitiesStart.resolveCapabilities.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ResolveCapabilitiesOptions", + " | undefined" + ], + "path": "node_modules/@types/kbn__core-capabilities-server/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationContext", + "type": "Interface", + "tags": [], + "label": "ConfigDeprecationContext", + "description": [ + "\nDeprecation context provided to {@link ConfigDeprecation | config deprecations}\n" + ], + "signature": [ + "ConfigDeprecationContext" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationContext.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "The current Kibana version, e.g `7.16.1`, `8.0.0`" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationContext.branch", + "type": "string", + "tags": [], + "label": "branch", + "description": [ + "The current Kibana branch, e.g `7.x`, `7.16`, `master`" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationContext.docLinks", + "type": "Object", + "tags": [], + "label": "docLinks", + "description": [ + "Allow direct access to the doc links from the deprecation handler" + ], + "signature": [ + "DocLinks" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory", + "type": "Interface", + "tags": [], + "label": "ConfigDeprecationFactory", + "description": [ + "\nProvides helpers to generates the most commonly used {@link ConfigDeprecation}\nwhen invoking a {@link ConfigDeprecationProvider}.\n\nSee methods documentation for more detailed examples.\n" + ], + "signature": [ + "ConfigDeprecationFactory" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecate", + "type": "Function", + "tags": [], + "label": "deprecate", + "description": [ + "\nDeprecate a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the deprecatedKey was found.\n" + ], + "signature": [ + "(deprecatedKey: string, removeBy: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecate.$1", + "type": "string", + "tags": [], + "label": "deprecatedKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecate.$2", + "type": "string", + "tags": [], + "label": "removeBy", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecate.$3", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot", + "type": "Function", + "tags": [], + "label": "deprecateFromRoot", + "description": [ + "\nDeprecate a configuration property from the root configuration.\nWill log a deprecation warning if the deprecatedKey was found.\n\nThis should be only used when deprecating properties from different configuration's path.\nTo deprecate properties from inside a plugin's configuration, use 'deprecate' instead.\n" + ], + "signature": [ + "(deprecatedKey: string, removeBy: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$1", + "type": "string", + "tags": [], + "label": "deprecatedKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$2", + "type": "string", + "tags": [], + "label": "removeBy", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.deprecateFromRoot.$3", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.rename", + "type": "Function", + "tags": [], + "label": "rename", + "description": [ + "\nRename a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n" + ], + "signature": [ + "(oldKey: string, newKey: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.rename.$1", + "type": "string", + "tags": [], + "label": "oldKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.rename.$2", + "type": "string", + "tags": [], + "label": "newKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.rename.$3", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot", + "type": "Function", + "tags": [], + "label": "renameFromRoot", + "description": [ + "\nRename a configuration property from the root configuration.\nWill log a deprecation warning if the oldKey was found and deprecation applied.\n\nThis should be only used when renaming properties from different configuration's path.\nTo rename properties from inside a plugin's configuration, use 'rename' instead.\n" + ], + "signature": [ + "(oldKey: string, newKey: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$1", + "type": "string", + "tags": [], + "label": "oldKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$2", + "type": "string", + "tags": [], + "label": "newKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.renameFromRoot.$3", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unused", + "type": "Function", + "tags": [], + "label": "unused", + "description": [ + "\nRemove a configuration property from inside a plugin's configuration path.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n" + ], + "signature": [ + "(unusedKey: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unused.$1", + "type": "string", + "tags": [], + "label": "unusedKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unused.$2", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot", + "type": "Function", + "tags": [], + "label": "unusedFromRoot", + "description": [ + "\nRemove a configuration property from the root configuration.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n\nThis should be only used when removing properties from outside of a plugin's configuration.\nTo remove properties from inside a plugin's configuration, use 'unused' instead.\n" + ], + "signature": [ + "(unusedKey: string, details: ", + "FactoryConfigDeprecationDetails", + ") => ", + "ConfigDeprecation" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$1", + "type": "string", + "tags": [], + "label": "unusedKey", + "description": [], + "signature": [ + "string" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "core", + "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$2", + "type": "CompoundType", + "tags": [], + "label": "details", + "description": [], + "signature": [ + "FactoryConfigDeprecationDetails" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.ContextProviderOpts", + "type": "Interface", + "tags": [], + "label": "ContextProviderOpts", + "description": [ + "\nDefinition of a context provider" + ], + "signature": [ + "ContextProviderOpts", + "" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.ContextProviderOpts.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nThe name of the provider." + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.ContextProviderOpts.context$", + "type": "Object", + "tags": [], + "label": "context$", + "description": [ + "\nObservable that emits the custom context." + ], + "signature": [ + "Observable", + "" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.ContextProviderOpts.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [ + "\nSchema declaring and documenting the expected output in the context$\n" + ], + "signature": [ + "{ [Key in keyof Required]: ", + "SchemaValue", + "; }" + ], + "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData", + "type": "Interface", + "tags": [], + "label": "CoreConfigUsageData", + "description": [ + "\nUsage data on this cluster's configuration of Core features" + ], + "signature": [ + "CoreConfigUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "{ sniffOnStart: boolean; sniffIntervalMs?: number | undefined; sniffOnConnectionFault: boolean; numberOfHostsConfigured: number; requestHeadersWhitelistConfigured: boolean; customHeadersConfigured: boolean; shardTimeoutMs: number; requestTimeoutMs: number; pingTimeoutMs: number; logQueries: boolean; ssl: { verificationMode: \"none\" | \"full\" | \"certificate\"; certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; alwaysPresentCertificate: boolean; }; apiVersion: string; healthCheckDelayMs: number; principal: \"unknown\" | \"elastic_user\" | \"kibana_user\" | \"kibana_system_user\" | \"other_user\" | \"kibana_service_account\"; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [], + "signature": [ + "{ basePathConfigured: boolean; maxPayloadInBytes: number; rewriteBasePath: boolean; keepaliveTimeout: number; socketTimeout: number; compression: { enabled: boolean; referrerWhitelistConfigured: boolean; }; xsrf: { disableProtection: boolean; allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; ipAllowlistConfigured: boolean; }; ssl: { certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; cipherSuites: string[]; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; redirectHttpFromPortConfigured: boolean; supportedProtocols: string[]; clientAuthentication: \"optional\" | \"none\" | \"required\"; }; securityResponseHeaders: { strictTransportSecurity: string; xContentTypeOptions: string; referrerPolicy: string; permissionsPolicyConfigured: boolean; disableEmbedding: boolean; }; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData.logging", + "type": "Object", + "tags": [], + "label": "logging", + "description": [], + "signature": [ + "{ appendersTypesUsed: string[]; loggersConfiguredCount: number; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "{ customIndex: boolean; maxImportPayloadBytes: number; maxImportExportSize: number; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreConfigUsageData.deprecatedKeys", + "type": "Object", + "tags": [], + "label": "deprecatedKeys", + "description": [], + "signature": [ + "{ set: string[]; unset: string[]; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreEnvironmentUsageData", + "type": "Interface", + "tags": [], + "label": "CoreEnvironmentUsageData", + "description": [ + "\nUsage data on this Kibana node's runtime environment." + ], + "signature": [ + "CoreEnvironmentUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreEnvironmentUsageData.memory", + "type": "Object", + "tags": [], + "label": "memory", + "description": [], + "signature": [ + "{ heapTotalBytes: number; heapUsedBytes: number; heapSizeLimit: number; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementCounterParams", + "type": "Interface", + "tags": [], + "label": "CoreIncrementCounterParams", + "description": [], + "signature": [ + "CoreIncrementCounterParams" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementCounterParams.counterName", + "type": "string", + "tags": [], + "label": "counterName", + "description": [ + "The name of the counter" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementCounterParams.counterType", + "type": "string", + "tags": [], + "label": "counterType", + "description": [ + "The counter type (\"count\" by default)" + ], + "signature": [ + "string | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementCounterParams.incrementBy", + "type": "number", + "tags": [], + "label": "incrementBy", + "description": [ + "Increment the counter by this number (1 if not specified)" + ], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CorePreboot", + "type": "Interface", + "tags": [], + "label": "CorePreboot", + "description": [ + "\nContext passed to the `setup` method of `preboot` plugins." + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CorePreboot.analytics", + "type": "Object", + "tags": [], + "label": "analytics", + "description": [ + "{@link AnalyticsServicePreboot}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; registerEventType: (eventTypeOps: ", + "EventTypeOpts", + ") => void; registerShipper: (Shipper: ", + "ShipperClassConstructor", + ", shipperConfig: ShipperConfig, opts?: ", + "RegisterShipperOpts", + " | undefined) => void; registerContextProvider: (contextProviderOpts: ", + "ContextProviderOpts", + ") => void; removeContextProvider: (contextProviderName: string) => void; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CorePreboot.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [ + "{@link ElasticsearchServicePreboot}" + ], + "signature": [ + "ElasticsearchServicePreboot" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CorePreboot.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [ + "{@link HttpServicePreboot}" + ], + "signature": [ + "HttpServicePreboot", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + ">" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CorePreboot.preboot", + "type": "Object", + "tags": [], + "label": "preboot", + "description": [ + "{@link PrebootServicePreboot}" + ], + "signature": [ + "PrebootServicePreboot" + ], + "path": "src/core/server/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext", + "type": "Interface", + "tags": [], + "label": "CoreRequestHandlerContext", + "description": [ + "\nThe `core` context provided to route handler.\n\nProvides the following clients and services:\n - {@link SavedObjectsClient | savedObjects.client} - Saved Objects client\n which uses the credentials of the incoming request\n - {@link ISavedObjectTypeRegistry | savedObjects.typeRegistry} - Type registry containing\n all the registered types.\n - {@link IScopedClusterClient | elasticsearch.client} - Elasticsearch\n data client which uses the credentials of the incoming request\n - {@link IUiSettingsClient | uiSettings.client} - uiSettings client\n which uses the credentials of the incoming request" + ], + "path": "src/core/server/core_route_handler_context.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "SavedObjectsRequestHandlerContext" + ], + "path": "src/core/server/core_route_handler_context.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "ElasticsearchRequestHandlerContext" + ], + "path": "src/core/server/core_route_handler_context.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.uiSettings", + "type": "Object", + "tags": [], + "label": "uiSettings", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.UiSettingsRequestHandlerContext", + "text": "UiSettingsRequestHandlerContext" + } + ], + "path": "src/core/server/core_route_handler_context.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreRequestHandlerContext.deprecations", + "type": "Object", + "tags": [], + "label": "deprecations", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.DeprecationsRequestHandlerContext", + "text": "DeprecationsRequestHandlerContext" + } + ], + "path": "src/core/server/core_route_handler_context.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreServicesUsageData", + "type": "Interface", + "tags": [], + "label": "CoreServicesUsageData", + "description": [ + "\nUsage data from Core services" + ], + "signature": [ + "CoreServicesUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreServicesUsageData.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "{ indices: { alias: string; docsCount: number; docsDeleted: number; storeSizeBytes: number; primaryStoreSizeBytes: number; savedObjectsDocsCount: number; }[]; legacyUrlAliases: { activeCount: number; inactiveCount: number; disabledCount: number; totalCount: number; }; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup", + "type": "Interface", + "tags": [], + "label": "CoreSetup", + "description": [ + "\nContext passed to the `setup` method of `standard` plugins.\n" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.analytics", + "type": "Object", + "tags": [], + "label": "analytics", + "description": [ + "{@link AnalyticsServiceSetup}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; registerEventType: (eventTypeOps: ", + "EventTypeOpts", + ") => void; registerShipper: (Shipper: ", + "ShipperClassConstructor", + ", shipperConfig: ShipperConfig, opts?: ", + "RegisterShipperOpts", + " | undefined) => void; registerContextProvider: (contextProviderOpts: ", + "ContextProviderOpts", + ") => void; removeContextProvider: (contextProviderName: string) => void; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.capabilities", + "type": "Object", + "tags": [], + "label": "capabilities", + "description": [ + "{@link CapabilitiesSetup}" + ], + "signature": [ + "CapabilitiesSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.docLinks", + "type": "Object", + "tags": [], + "label": "docLinks", + "description": [ + "{@link DocLinksServiceSetup}" + ], + "signature": [ + "DocLinksServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [ + "{@link ElasticsearchServiceSetup}" + ], + "signature": [ + "ElasticsearchServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.executionContext", + "type": "Object", + "tags": [], + "label": "executionContext", + "description": [ + "{@link ExecutionContextSetup}" + ], + "signature": [ + "ExecutionContextSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.http", + "type": "CompoundType", + "tags": [], + "label": "http", + "description": [ + "{@link HttpServiceSetup}" + ], + "signature": [ + "HttpServiceSetup", + "<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.RequestHandlerContext", + "text": "RequestHandlerContext" + }, + "> & { resources: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.HttpResources", + "text": "HttpResources" + }, + "; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.i18n", + "type": "Object", + "tags": [], + "label": "i18n", + "description": [ + "{@link I18nServiceSetup}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.I18nServiceSetup", + "text": "I18nServiceSetup" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.logging", + "type": "Object", + "tags": [], + "label": "logging", + "description": [ + "{@link LoggingServiceSetup}" + ], + "signature": [ + "LoggingServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.metrics", + "type": "Object", + "tags": [], + "label": "metrics", + "description": [ + "{@link MetricsServiceSetup}" + ], + "signature": [ + "MetricsServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [ + "{@link SavedObjectsServiceSetup}" + ], + "signature": [ + "SavedObjectsServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.status", + "type": "Object", + "tags": [], + "label": "status", + "description": [ + "{@link StatusServiceSetup}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.StatusServiceSetup", + "text": "StatusServiceSetup" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.uiSettings", + "type": "Object", + "tags": [], + "label": "uiSettings", + "description": [ + "{@link UiSettingsServiceSetup}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.UiSettingsServiceSetup", + "text": "UiSettingsServiceSetup" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.deprecations", + "type": "Object", + "tags": [], + "label": "deprecations", + "description": [ + "{@link DeprecationsServiceSetup}" + ], + "signature": [ + "DeprecationsServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreSetup.getStartServices", + "type": "Function", + "tags": [], + "label": "getStartServices", + "description": [ + "{@link StartServicesAccessor}" + ], + "signature": [ + "() => Promise<[", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" + }, + ", TPluginsStart, TStart]>" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart", + "type": "Interface", + "tags": [], + "label": "CoreStart", + "description": [ + "\nContext passed to the plugins `start` method.\n" + ], + "path": "src/core/server/index.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreStart.analytics", + "type": "Object", + "tags": [], + "label": "analytics", + "description": [ + "{@link AnalyticsServiceStart}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; }" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.capabilities", + "type": "Object", + "tags": [], + "label": "capabilities", + "description": [ + "{@link CapabilitiesStart}" + ], + "signature": [ + "CapabilitiesStart" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.docLinks", + "type": "Object", + "tags": [], + "label": "docLinks", + "description": [ + "{@link DocLinksServiceStart}" + ], + "signature": [ + "DocLinksServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [ + "{@link ElasticsearchServiceStart}" + ], + "signature": [ + "ElasticsearchServiceStart" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.executionContext", + "type": "Object", + "tags": [], + "label": "executionContext", + "description": [ + "{@link ExecutionContextStart}" + ], + "signature": [ + "ExecutionContextSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [ + "{@link HttpServiceStart}" + ], + "signature": [ + "HttpServiceStart" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.metrics", + "type": "Object", + "tags": [], + "label": "metrics", + "description": [ + "{@link MetricsServiceStart}" + ], + "signature": [ + "MetricsServiceSetup" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [ + "{@link SavedObjectsServiceStart}" + ], + "signature": [ + "SavedObjectsServiceStart" + ], + "path": "src/core/server/index.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStart.uiSettings", + "type": "Object", + "tags": [], + "label": "uiSettings", + "description": [ + "{@link UiSettingsServiceStart}" + ], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.UiSettingsServiceStart", + "text": "UiSettingsServiceStart" + } + ], + "path": "src/core/server/index.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStatus", + "type": "Interface", + "tags": [], + "label": "CoreStatus", + "description": [ + "\nStatus of core services.\n" + ], + "path": "src/core/server/status/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreStatus.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "ServiceStatus", + "" + ], + "path": "src/core/server/status/types.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreStatus.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "ServiceStatus", + "" + ], + "path": "src/core/server/status/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageCounter", + "type": "Interface", + "tags": [], + "label": "CoreUsageCounter", + "description": [], + "signature": [ + "CoreUsageCounter" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageData", + "type": "Interface", + "tags": [], + "label": "CoreUsageData", + "description": [ + "\nType describing Core's usage data payload" + ], + "signature": [ + "CoreUsageData", + " extends ", + "CoreUsageStats" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreUsageData.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "CoreConfigUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageData.services", + "type": "Object", + "tags": [], + "label": "services", + "description": [], + "signature": [ + "CoreServicesUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageData.environment", + "type": "Object", + "tags": [], + "label": "environment", + "description": [], + "signature": [ + "CoreEnvironmentUsageData" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageDataSetup", + "type": "Interface", + "tags": [ + "note" + ], + "label": "CoreUsageDataSetup", + "description": [ + "\nInternal API for registering the Usage Tracker used for Core's usage data payload.\n" + ], + "signature": [ + "CoreUsageDataSetup" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreUsageDataSetup.registerUsageCounter", + "type": "Function", + "tags": [], + "label": "registerUsageCounter", + "description": [ + "\nAPI for a usage tracker plugin to inject the {@link CoreUsageCounter} to use\nwhen tracking events." + ], + "signature": [ + "(usageCounter: ", + "CoreUsageCounter", + ") => void" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreUsageDataSetup.registerUsageCounter.$1", + "type": "Object", + "tags": [], + "label": "usageCounter", + "description": [], + "signature": [ + "CoreUsageCounter" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageDataStart", + "type": "Interface", + "tags": [ + "note" + ], + "label": "CoreUsageDataStart", + "description": [ + "\nInternal API for getting Core's usage data payload.\n" + ], + "signature": [ + "CoreUsageDataStart" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreUsageDataStart.getConfigsUsageData", + "type": "Function", + "tags": [], + "label": "getConfigsUsageData", + "description": [], + "signature": [ + "() => Promise<", + "ConfigUsageData", + ">" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats", + "type": "Interface", + "tags": [], + "label": "CoreUsageStats", + "description": [], + "signature": [ + "CoreUsageStats" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" ], - "returnComment": [] + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot", - "type": "Function", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.no", + "type": "number", "tags": [], - "label": "unusedFromRoot", - "description": [ - "\nRemove a configuration property from the root configuration.\nWill log a deprecation warning if the unused key was found and deprecation applied.\n\nThis should be only used when removing properties from outside of a plugin's configuration.\nTo remove properties from inside a plugin's configuration, use 'unused' instead.\n" - ], + "label": "'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.no'", + "description": [], "signature": [ - "(unusedKey: string, details: ", - "FactoryConfigDeprecationDetails", - ") => ", - "ConfigDeprecation" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$1", - "type": "string", - "tags": [], - "label": "unusedKey", - "description": [], - "signature": [ - "string" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.ConfigDeprecationFactory.unusedFromRoot.$2", - "type": "CompoundType", - "tags": [], - "label": "details", - "description": [], - "signature": [ - "FactoryConfigDeprecationDetails" - ], - "path": "node_modules/@types/kbn__config/index.d.ts", - "deprecated": false, - "isRequired": true - } + "number | undefined" ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.ContextProviderOpts", - "type": "Interface", - "tags": [], - "label": "ContextProviderOpts", - "description": [ - "\nDefinition of a context provider" - ], - "signature": [ - "ContextProviderOpts", - "" - ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", - "deprecated": false, - "children": [ + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, { "parentPluginId": "core", - "id": "def-server.ContextProviderOpts.name", - "type": "string", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.createNewCopiesEnabled.yes", + "type": "number", "tags": [], - "label": "name", - "description": [ - "\nThe name of the provider." + "label": "'apiCalls.savedObjectsImport.createNewCopiesEnabled.yes'", + "description": [], + "signature": [ + "number | undefined" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ContextProviderOpts.context$", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.createNewCopiesEnabled.no", + "type": "number", "tags": [], - "label": "context$", - "description": [ - "\nObservable that emits the custom context." - ], + "label": "'apiCalls.savedObjectsImport.createNewCopiesEnabled.no'", + "description": [], "signature": [ - "Observable", - "" + "number | undefined" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.ContextProviderOpts.schema", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.overwriteEnabled.yes", + "type": "number", "tags": [], - "label": "schema", - "description": [ - "\nSchema declaring and documenting the expected output in the context$\n" + "label": "'apiCalls.savedObjectsImport.overwriteEnabled.yes'", + "description": [], + "signature": [ + "number | undefined" ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.overwriteEnabled.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.overwriteEnabled.no'", + "description": [], "signature": [ - "{ [Key in keyof Required]: ", - "SchemaValue", - "; }" + "number | undefined" ], - "path": "node_modules/@types/kbn__analytics-client/index.d.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CorePreboot", - "type": "Interface", - "tags": [], - "label": "CorePreboot", - "description": [ - "\nContext passed to the `setup` method of `preboot` plugins." - ], - "path": "src/core/server/index.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CorePreboot.analytics", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.total", + "type": "number", "tags": [], - "label": "analytics", - "description": [ - "{@link AnalyticsServicePreboot}" + "label": "'apiCalls.savedObjectsResolveImportErrors.total'", + "description": [], + "signature": [ + "number | undefined" ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.total'", + "description": [], "signature": [ - "{ optIn: (optInConfig: ", - "OptInConfig", - ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", - "Observable", - "<", - "TelemetryCounter", - ">; registerEventType: (eventTypeOps: ", - "EventTypeOpts", - ") => void; registerShipper: (Shipper: ", - "ShipperClassConstructor", - ", shipperConfig: ShipperConfig, opts?: ", - "RegisterShipperOpts", - " | undefined) => void; registerContextProvider: (contextProviderOpts: ", - "ContextProviderOpts", - ") => void; removeContextProvider: (contextProviderName: string) => void; }" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CorePreboot.elasticsearch", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "elasticsearch", - "description": [ - "{@link ElasticsearchServicePreboot}" + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.no'", + "description": [], "signature": [ - "ElasticsearchServicePreboot" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CorePreboot.http", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.total", + "type": "number", "tags": [], - "label": "http", - "description": [ - "{@link HttpServicePreboot}" + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.yes'", + "description": [], "signature": [ - "HttpServicePreboot", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - }, - ">" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CorePreboot.preboot", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.no", + "type": "number", "tags": [], - "label": "preboot", - "description": [ - "{@link PrebootServicePreboot}" + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes'", + "description": [], "signature": [ - "PrebootServicePreboot" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CoreRequestHandlerContext", - "type": "Interface", - "tags": [], - "label": "CoreRequestHandlerContext", - "description": [ - "\nThe `core` context provided to route handler.\n\nProvides the following clients and services:\n - {@link SavedObjectsClient | savedObjects.client} - Saved Objects client\n which uses the credentials of the incoming request\n - {@link ISavedObjectTypeRegistry | savedObjects.typeRegistry} - Type registry containing\n all the registered types.\n - {@link IScopedClusterClient | elasticsearch.client} - Elasticsearch\n data client which uses the credentials of the incoming request\n - {@link IUiSettingsClient | uiSettings.client} - uiSettings client\n which uses the credentials of the incoming request" - ], - "path": "src/core/server/core_route_handler_context.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CoreRequestHandlerContext.savedObjects", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no", + "type": "number", "tags": [], - "label": "savedObjects", + "label": "'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no'", "description": [], "signature": [ - "SavedObjectsRequestHandlerContext" + "number | undefined" ], - "path": "src/core/server/core_route_handler_context.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreRequestHandlerContext.elasticsearch", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.total", + "type": "number", "tags": [], - "label": "elasticsearch", + "label": "'apiCalls.savedObjectsExport.total'", "description": [], "signature": [ - "ElasticsearchRequestHandlerContext" + "number | undefined" ], - "path": "src/core/server/core_route_handler_context.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreRequestHandlerContext.uiSettings", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.total", + "type": "number", "tags": [], - "label": "uiSettings", + "label": "'apiCalls.savedObjectsExport.namespace.default.total'", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.UiSettingsRequestHandlerContext", - "text": "UiSettingsRequestHandlerContext" - } + "number | undefined" ], - "path": "src/core/server/core_route_handler_context.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreRequestHandlerContext.deprecations", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "deprecations", + "label": "'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.yes'", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationsRequestHandlerContext", - "text": "DeprecationsRequestHandlerContext" - } + "number | undefined" ], - "path": "src/core/server/core_route_handler_context.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CoreSetup", - "type": "Interface", - "tags": [], - "label": "CoreSetup", - "description": [ - "\nContext passed to the `setup` method of `standard` plugins.\n" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" }, - "" - ], - "path": "src/core/server/index.ts", - "deprecated": false, - "children": [ { "parentPluginId": "core", - "id": "def-server.CoreSetup.analytics", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.kibanaRequest.no", + "type": "number", "tags": [], - "label": "analytics", - "description": [ - "{@link AnalyticsServiceSetup}" - ], + "label": "'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.no'", + "description": [], "signature": [ - "{ optIn: (optInConfig: ", - "OptInConfig", - ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", - "Observable", - "<", - "TelemetryCounter", - ">; registerEventType: (eventTypeOps: ", - "EventTypeOpts", - ") => void; registerShipper: (Shipper: ", - "ShipperClassConstructor", - ", shipperConfig: ShipperConfig, opts?: ", - "RegisterShipperOpts", - " | undefined) => void; registerContextProvider: (contextProviderOpts: ", - "ContextProviderOpts", - ") => void; removeContextProvider: (contextProviderName: string) => void; }" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.capabilities", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.total", + "type": "number", "tags": [], - "label": "capabilities", - "description": [ - "{@link CapabilitiesSetup}" - ], + "label": "'apiCalls.savedObjectsExport.namespace.custom.total'", + "description": [], "signature": [ - "CapabilitiesSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.docLinks", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "docLinks", - "description": [ - "{@link DocLinksServiceSetup}" - ], + "label": "'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.yes'", + "description": [], "signature": [ - "DocLinksServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.elasticsearch", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.no", + "type": "number", "tags": [], - "label": "elasticsearch", - "description": [ - "{@link ElasticsearchServiceSetup}" - ], + "label": "'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.no'", + "description": [], "signature": [ - "ElasticsearchServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.executionContext", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.allTypesSelected.yes", + "type": "number", "tags": [], - "label": "executionContext", - "description": [ - "{@link ExecutionContextSetup}" - ], + "label": "'apiCalls.savedObjectsExport.allTypesSelected.yes'", + "description": [], "signature": [ - "ExecutionContextSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.http", - "type": "CompoundType", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.allTypesSelected.no", + "type": "number", "tags": [], - "label": "http", - "description": [ - "{@link HttpServiceSetup}" - ], + "label": "'apiCalls.savedObjectsExport.allTypesSelected.no'", + "description": [], "signature": [ - "HttpServiceSetup", - "<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RequestHandlerContext", - "text": "RequestHandlerContext" - }, - "> & { resources: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.HttpResources", - "text": "HttpResources" - }, - "; }" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.i18n", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.total", + "type": "number", "tags": [], - "label": "i18n", - "description": [ - "{@link I18nServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.total'", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.I18nServiceSetup", - "text": "I18nServiceSetup" - } + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.logging", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.total", + "type": "number", "tags": [], - "label": "logging", - "description": [ - "{@link LoggingServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.namespace.default.total'", + "description": [], "signature": [ - "LoggingServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.metrics", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "metrics", - "description": [ - "{@link MetricsServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.yes'", + "description": [], "signature": [ - "MetricsServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.savedObjects", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.no", + "type": "number", "tags": [], - "label": "savedObjects", - "description": [ - "{@link SavedObjectsServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.no'", + "description": [], "signature": [ - "SavedObjectsServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.status", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.total", + "type": "number", "tags": [], - "label": "status", - "description": [ - "{@link StatusServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.namespace.custom.total'", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.StatusServiceSetup", - "text": "StatusServiceSetup" - } + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.uiSettings", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "uiSettings", - "description": [ - "{@link UiSettingsServiceSetup}" - ], + "label": "'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.yes'", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.UiSettingsServiceSetup", - "text": "UiSettingsServiceSetup" - } + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.deprecations", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.no", + "type": "number", "tags": [], - "label": "deprecations", - "description": [ - "{@link DeprecationsServiceSetup}" - ], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.DeprecationsServiceSetup", - "text": "DeprecationsServiceSetup" - } + "label": "'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreSetup.getStartServices", - "type": "Function", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.total", + "type": "number", "tags": [], - "label": "getStartServices", - "description": [ - "{@link StartServicesAccessor}" - ], + "label": "'apiCalls.legacyDashboardImport.total'", + "description": [], "signature": [ - "() => Promise<[", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - }, - ", TPluginsStart, TStart]>" + "number | undefined" ], - "path": "src/core/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CoreStart", - "type": "Interface", - "tags": [], - "label": "CoreStart", - "description": [ - "\nContext passed to the plugins `start` method.\n" - ], - "path": "src/core/server/index.ts", - "deprecated": false, - "children": [ + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + }, { "parentPluginId": "core", - "id": "def-server.CoreStart.analytics", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.total", + "type": "number", "tags": [], - "label": "analytics", - "description": [ - "{@link AnalyticsServiceStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.default.total'", + "description": [], "signature": [ - "{ optIn: (optInConfig: ", - "OptInConfig", - ") => void; reportEvent: (eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", - "Observable", - "<", - "TelemetryCounter", - ">; }" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.capabilities", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "capabilities", - "description": [ - "{@link CapabilitiesStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.yes'", + "description": [], "signature": [ - "CapabilitiesStart" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.docLinks", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.no", + "type": "number", "tags": [], - "label": "docLinks", - "description": [ - "{@link DocLinksServiceStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.no'", + "description": [], "signature": [ - "DocLinksServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.elasticsearch", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.total", + "type": "number", "tags": [], - "label": "elasticsearch", - "description": [ - "{@link ElasticsearchServiceStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.total'", + "description": [], "signature": [ - "ElasticsearchServiceStart" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.executionContext", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.yes", + "type": "number", "tags": [], - "label": "executionContext", - "description": [ - "{@link ExecutionContextStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.yes'", + "description": [], "signature": [ - "ExecutionContextSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.http", - "type": "Object", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.no", + "type": "number", "tags": [], - "label": "http", - "description": [ - "{@link HttpServiceStart}" - ], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.no'", + "description": [], "signature": [ - "HttpServiceStart" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.metrics", - "type": "Object", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.exactMatch", + "type": "number", "tags": [], - "label": "metrics", - "description": [ - "{@link MetricsServiceStart}" - ], + "label": "'savedObjectsRepository.resolvedOutcome.exactMatch'", + "description": [], "signature": [ - "MetricsServiceSetup" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.savedObjects", - "type": "Object", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.aliasMatch", + "type": "number", "tags": [], - "label": "savedObjects", - "description": [ - "{@link SavedObjectsServiceStart}" - ], + "label": "'savedObjectsRepository.resolvedOutcome.aliasMatch'", + "description": [], "signature": [ - "SavedObjectsServiceStart" + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStart.uiSettings", - "type": "Object", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.conflict", + "type": "number", "tags": [], - "label": "uiSettings", - "description": [ - "{@link UiSettingsServiceStart}" - ], + "label": "'savedObjectsRepository.resolvedOutcome.conflict'", + "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.UiSettingsServiceStart", - "text": "UiSettingsServiceStart" - } + "number | undefined" ], - "path": "src/core/server/index.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.CoreStatus", - "type": "Interface", - "tags": [], - "label": "CoreStatus", - "description": [ - "\nStatus of core services.\n" - ], - "path": "src/core/server/status/types.ts", - "deprecated": false, - "children": [ + }, { "parentPluginId": "core", - "id": "def-server.CoreStatus.elasticsearch", - "type": "Object", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.notFound", + "type": "number", "tags": [], - "label": "elasticsearch", + "label": "'savedObjectsRepository.resolvedOutcome.notFound'", "description": [], "signature": [ - "ServiceStatus", - "" + "number | undefined" ], - "path": "src/core/server/status/types.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false }, { "parentPluginId": "core", - "id": "def-server.CoreStatus.savedObjects", - "type": "Object", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.total", + "type": "number", "tags": [], - "label": "savedObjects", + "label": "'savedObjectsRepository.resolvedOutcome.total'", "description": [], "signature": [ - "ServiceStatus", - "" + "number | undefined" ], - "path": "src/core/server/status/types.ts", + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", "deprecated": false } ], @@ -14470,7 +17975,10 @@ "description": [ "\nThe deprecations service provides a way for the Kibana platform to communicate deprecated\nfeatures and configs with its users. These deprecations are only communicated\nif the deployment is using these features. Allowing for a user tailored experience\nfor upgrading the stack version.\n\nThe Deprecation service is consumed by the upgrade assistant to assist with the upgrade\nexperience.\n\nIf a deprecated feature can be resolved without manual user intervention.\nUsing correctiveActions.api allows the Upgrade Assistant to use this api to correct the\ndeprecation upon a user trigger.\n" ], - "path": "src/core/server/deprecations/deprecations_service.ts", + "signature": [ + "DeprecationsServiceSetup" + ], + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "children": [ { @@ -14482,16 +17990,10 @@ "description": [], "signature": [ "(deprecationContext: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RegisterDeprecationsConfig", - "text": "RegisterDeprecationsConfig" - }, + "RegisterDeprecationsConfig", ") => void" ], - "path": "src/core/server/deprecations/deprecations_service.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "children": [ { @@ -14502,15 +18004,9 @@ "label": "deprecationContext", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.RegisterDeprecationsConfig", - "text": "RegisterDeprecationsConfig" - } + "RegisterDeprecationsConfig" ], - "path": "src/core/server/deprecations/deprecations_service.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "isRequired": true } @@ -15859,7 +19355,10 @@ "tags": [], "label": "GetDeprecationsContext", "description": [], - "path": "src/core/server/deprecations/types.ts", + "signature": [ + "GetDeprecationsContext" + ], + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "children": [ { @@ -15872,7 +19371,7 @@ "signature": [ "IScopedClusterClient" ], - "path": "src/core/server/deprecations/types.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false }, { @@ -15885,7 +19384,7 @@ "signature": [ "SavedObjectsClientContract" ], - "path": "src/core/server/deprecations/types.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false } ], @@ -28977,7 +32476,10 @@ "tags": [], "label": "RegisterDeprecationsConfig", "description": [], - "path": "src/core/server/deprecations/types.ts", + "signature": [ + "RegisterDeprecationsConfig" + ], + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "children": [ { @@ -28989,20 +32491,14 @@ "description": [], "signature": [ "(context: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.GetDeprecationsContext", - "text": "GetDeprecationsContext" - }, + "GetDeprecationsContext", ") => ", "MaybePromise", "<", "DeprecationsDetails", "[]>" ], - "path": "src/core/server/deprecations/types.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "children": [ { @@ -29013,15 +32509,9 @@ "label": "context", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.GetDeprecationsContext", - "text": "GetDeprecationsContext" - } + "GetDeprecationsContext" ], - "path": "src/core/server/deprecations/types.ts", + "path": "node_modules/@types/kbn__core-deprecations-server/index.d.ts", "deprecated": false, "isRequired": true } @@ -34082,6 +37572,14 @@ { "plugin": "dashboard", "path": "src/plugins/dashboard/server/saved_objects/migrations_730.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migration_logger.ts" } ], "children": [ @@ -38204,6 +41702,54 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "core", + "id": "def-server.ConfigUsageData", + "type": "Type", + "tags": [], + "label": "ConfigUsageData", + "description": [ + "\nType describing Core's usage data payload" + ], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementUsageCounter", + "type": "Type", + "tags": [], + "label": "CoreIncrementUsageCounter", + "description": [], + "signature": [ + "(params: ", + "CoreIncrementCounterParams", + ") => void" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "core", + "id": "def-server.CoreIncrementUsageCounter.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "CoreIncrementCounterParams" + ], + "path": "node_modules/@types/kbn__core-usage-data-server/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "core", "id": "def-server.CustomRequestHandlerContext", diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 96882c03eb2f..ee92dc788de6 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github description: API docs for the core plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2524 | 1 | 216 | 5 | +| 2674 | 1 | 136 | 5 | ## Client diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 827328bfe630..5c244e6c1c74 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github description: API docs for the core.application plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] --- import coreApplicationObj from './core_application.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2524 | 1 | 216 | 5 | +| 2674 | 1 | 136 | 5 | ## Client diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index bc1127f35ea2..5fd5f48ffea4 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github description: API docs for the core.chrome plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] --- import coreChromeObj from './core_chrome.devdocs.json'; @@ -21,7 +21,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2524 | 1 | 216 | 5 | +| 2674 | 1 | 136 | 5 | ## Client diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx deleted file mode 100644 index 048c34dc3461..000000000000 --- a/api_docs/core_saved_objects.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -#### -#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. -#### Reach out in #docs-engineering for more info. -#### -id: kibCoreSavedObjectsPluginApi -slug: /kibana-dev-docs/api/core-savedObjects -title: "core.savedObjects" -image: https://source.unsplash.com/400x175/?github -description: API docs for the core.savedObjects plugin -date: 2022-08-26 -tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] ---- -import coreSavedObjectsObj from './core_saved_objects.devdocs.json'; - - - -Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 2524 | 1 | 216 | 5 | - -## Server - -### Classes - - diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 5d695c42ee93..f204e18fc6d1 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 962dfa3447eb..e4c7ea24b6b9 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index bc42f8c1d37e..91ecdc910704 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 24aa8ca3d360..a89526596b14 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 671320cdd81a..9392405d158a 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index a1fca320137c..324fed3eee3d 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 54412d27e057..18c1d29beda1 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 9e287a5eed66..6aa60c835a19 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 0f75cc5398cc..d91fee2e2fe4 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index fd4096a5c431..18827f5bfecf 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 4355e0004a66..6299cdf51af6 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 51ca115e6d42..4d6d558ed3fb 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -74,7 +74,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | securitySolution | 8.8.0 | | | savedObjectsTaggingOss, dashboard | 8.8.0 | | | dashboard | 8.8.0 | -| | maps, dashboard | 8.8.0 | +| | maps, dashboard, @kbn/core-saved-objects-migration-server-internal | 8.8.0 | | | monitoring, kibanaUsageCollection, @kbn/core-metrics-server-internal | 8.8.0 | | | security, fleet | 8.8.0 | | | security, fleet | 8.8.0 | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 831a7df0f89b..6c9431ff6e0d 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -43,6 +43,14 @@ so TS and code-reference navigation might not highlight them. | +## @kbn/core-saved-objects-migration-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [document_migrator.test.ts](https://github.com/elastic/kibana/tree/master/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.ts#:~:text=warning), [migration_logger.ts](https://github.com/elastic/kibana/tree/master/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migration_logger.ts#:~:text=warning) | 8.8.0 | + + + ## actions | Deprecated API | Reference location(s) | Remove By | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index b44054f8a179..e129cc138bb5 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -77,6 +77,7 @@ so TS and code-reference navigation might not highlight them. | Note to maintainers: when looking at usages, mind that typical use could be inside a `catch` block, so TS and code-reference navigation might not highlight them. | +| @kbn/core-saved-objects-migration-server-internal | | [document_migrator.test.ts](https://github.com/elastic/kibana/tree/master/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/document_migrator.test.ts#:~:text=warning), [migration_logger.ts](https://github.com/elastic/kibana/tree/master/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/migration_logger.ts#:~:text=warning) | 8.8.0 | | @kbn/core-metrics-server-internal | | [ops_metrics_collector.ts](https://github.com/elastic/kibana/tree/master/packages/core/metrics/core-metrics-server-internal/src/ops_metrics_collector.ts#:~:text=process), [get_ops_metrics_log.ts](https://github.com/elastic/kibana/tree/master/packages/core/metrics/core-metrics-server-internal/src/logging/get_ops_metrics_log.ts#:~:text=process), [get_ops_metrics_log.test.ts](https://github.com/elastic/kibana/tree/master/packages/core/metrics/core-metrics-server-internal/src/logging/get_ops_metrics_log.test.ts#:~:text=process) | 8.8.0 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 0686a6d693ee..12f53da387c3 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 53195eade230..47b69ea35f87 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 6df6e4725523..8cd682821bef 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index b218b0361579..ac5e87634da4 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 733be8ab7517..c280cbfff40a 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index ab4974d750ca..d7607b317b8b 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 2740973114e7..061d4f848e22 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 7334ecf600d4..f21f1235949a 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 8a0295dd05ba..bfe5be56a415 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 99efa5192329..7956000ab3b6 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index f3f5168b2801..8c0da2b23b13 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 5e426c8ecd2b..29580dced00a 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 3bc8ce0a4f11..5f118b81f43d 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index e37fd456bb96..4d132b690dbb 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 08053b4efe15..63767f2f6d4d 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index c516ce28fbcd..7d65e2408600 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 10d15480a3f9..91a888e82c01 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 9a16085875aa..70e3366975e7 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index db884db7e94c..d0aef64b4b00 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 9dc941d59c51..64e82508c91e 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 5f345b23fba5..77bc5018511a 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 90bc05882119..d919b7ffa43f 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index aa45a96fcbb3..8b74ebfd96b6 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 800e8c33bb1a..78661bce3dce 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 0a4dbbc79630..5340fe80cb11 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 6a40753c2450..8c1ab5f24f91 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index bd88bfa214dd..ece71d7d98e2 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 4079dbdb47d7..7d220cbe91d7 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 518b52348920..cfd0ddc534b4 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -10433,12 +10433,12 @@ { "parentPluginId": "fleet", "id": "def-common.NewOutput.ca_sha256", - "type": "string", + "type": "CompoundType", "tags": [], "label": "ca_sha256", "description": [], "signature": [ - "string | undefined" + "string | null | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/output.ts", "deprecated": false @@ -10446,12 +10446,12 @@ { "parentPluginId": "fleet", "id": "def-common.NewOutput.ca_trusted_fingerprint", - "type": "string", + "type": "CompoundType", "tags": [], "label": "ca_trusted_fingerprint", "description": [], "signature": [ - "string | undefined" + "string | null | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/output.ts", "deprecated": false @@ -10459,12 +10459,12 @@ { "parentPluginId": "fleet", "id": "def-common.NewOutput.config_yaml", - "type": "string", + "type": "CompoundType", "tags": [], "label": "config_yaml", "description": [], "signature": [ - "string | undefined" + "string | null | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/output.ts", "deprecated": false @@ -10472,12 +10472,12 @@ { "parentPluginId": "fleet", "id": "def-common.NewOutput.ssl", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "ssl", "description": [], "signature": [ - "{ certificate_authorities?: string[] | undefined; certificate?: string | undefined; key?: string | undefined; } | undefined" + "{ certificate_authorities?: string[] | undefined; certificate?: string | undefined; key?: string | undefined; } | null | undefined" ], "path": "x-pack/plugins/fleet/common/types/models/output.ts", "deprecated": false diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index de705db1b3cb..6fc1753118f3 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 9f643c1cc2ad..2cd7d0a899c1 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 138372c6c83f..30f09e0fd92d 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 279ffb1047ba..7c512fdb5fbb 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 685392da3350..c9a615d7c79e 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 71dd514f27ce..4b93118bf932 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 56ccd5f93648..72b72338d5ca 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 0372b7eba4fe..3ee44096a86f 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 1fa1b355c27c..f04651599676 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 739ccbb931d3..4a398d2940b0 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index d0c78d9e3025..95915639fc98 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index c3b520d62919..913d9304ad4b 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 67c588334226..0d4829616c14 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 8391ddf8b4c6..a04f9caca9e8 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index fe3774e3ad85..3029b55d2b72 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index d33bf0e85a3b..59335d667bf8 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 849a54e3212d..b3a69fb667fc 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 2de9a296def7..181265895977 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index bd1e4d88418e..b9f4e5be2542 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index bbedcdb0aa64..bc7f8849d136 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 630e38918831..74309dee8289 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index c9639dc06d4b..2f1fd7612a57 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index d04a5fe90760..30424d8f11e9 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 256391a4bb91..84a0a15f0d11 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index c454a3e1a9d1..0919a4905283 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index cfa392b9ee0a..09a4e71b205f 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index cf9439c98c70..19b81b76bb85 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 5bd07da9c042..c2461d9c3c3a 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index e9c7d5dd4e53..36dc3ee5049f 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 6af75e0bd8fa..8127d8533077 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index f7ecc06585d4..f8c1a9407f51 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 714006813a48..4969d4652bcb 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 1262d844cd2d..ba08e833a873 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index d9929f4d3592..b3e83b88ac43 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 17b0120e798c..c46823aae5c3 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 11763a1b66c4..14872a2fbdb8 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 4c3ad6e058a2..e82724d89723 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 7ce886865cfa..407f3fb8dbce 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 95d24a9aa3a1..251a8c81bd69 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 609cf27b980b..d034aff68c2b 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 7b2aeddac42e..677079c72bd2 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 3ca0bf81fcf1..dbb5647895aa 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 1fe79a5c36a0..baf18e163c74 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 27c4a1f46b35..5912e43f2fad 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 3995d86b057c..f7fb41675590 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 8d61a8bde5ec..be3d0d5ecf5a 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 13dee31647a8..0f57c7d2f33a 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index cab1123abfa3..f216190b56a3 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index b8deaae0038b..0d1790635f6f 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.devdocs.json b/api_docs/kbn_core_deprecations_server.devdocs.json new file mode 100644 index 000000000000..fee60e803f44 --- /dev/null +++ b/api_docs/kbn_core_deprecations_server.devdocs.json @@ -0,0 +1,237 @@ +{ + "id": "@kbn/core-deprecations-server", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationRegistryProvider", + "type": "Interface", + "tags": [], + "label": "DeprecationRegistryProvider", + "description": [], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationRegistryProvider.getRegistry", + "type": "Function", + "tags": [], + "label": "getRegistry", + "description": [], + "signature": [ + "(domainId: string) => ", + { + "pluginId": "@kbn/core-deprecations-server", + "scope": "server", + "docId": "kibKbnCoreDeprecationsServerPluginApi", + "section": "def-server.DeprecationsServiceSetup", + "text": "DeprecationsServiceSetup" + } + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationRegistryProvider.getRegistry.$1", + "type": "string", + "tags": [], + "label": "domainId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationsServiceSetup", + "type": "Interface", + "tags": [], + "label": "DeprecationsServiceSetup", + "description": [ + "\nThe deprecations service provides a way for the Kibana platform to communicate deprecated\nfeatures and configs with its users. These deprecations are only communicated\nif the deployment is using these features. Allowing for a user tailored experience\nfor upgrading the stack version.\n\nThe Deprecation service is consumed by the upgrade assistant to assist with the upgrade\nexperience.\n\nIf a deprecated feature can be resolved without manual user intervention.\nUsing correctiveActions.api allows the Upgrade Assistant to use this api to correct the\ndeprecation upon a user trigger.\n" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationsServiceSetup.registerDeprecations", + "type": "Function", + "tags": [], + "label": "registerDeprecations", + "description": [], + "signature": [ + "(deprecationContext: ", + { + "pluginId": "@kbn/core-deprecations-server", + "scope": "server", + "docId": "kibKbnCoreDeprecationsServerPluginApi", + "section": "def-server.RegisterDeprecationsConfig", + "text": "RegisterDeprecationsConfig" + }, + ") => void" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.DeprecationsServiceSetup.registerDeprecations.$1", + "type": "Object", + "tags": [], + "label": "deprecationContext", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-deprecations-server", + "scope": "server", + "docId": "kibKbnCoreDeprecationsServerPluginApi", + "section": "def-server.RegisterDeprecationsConfig", + "text": "RegisterDeprecationsConfig" + } + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.GetDeprecationsContext", + "type": "Interface", + "tags": [], + "label": "GetDeprecationsContext", + "description": [], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.GetDeprecationsContext.esClient", + "type": "Object", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + "IScopedClusterClient" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.GetDeprecationsContext.savedObjectsClient", + "type": "Object", + "tags": [], + "label": "savedObjectsClient", + "description": [], + "signature": [ + "SavedObjectsClientContract" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.RegisterDeprecationsConfig", + "type": "Interface", + "tags": [], + "label": "RegisterDeprecationsConfig", + "description": [], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.RegisterDeprecationsConfig.getDeprecations", + "type": "Function", + "tags": [], + "label": "getDeprecations", + "description": [], + "signature": [ + "(context: ", + { + "pluginId": "@kbn/core-deprecations-server", + "scope": "server", + "docId": "kibKbnCoreDeprecationsServerPluginApi", + "section": "def-server.GetDeprecationsContext", + "text": "GetDeprecationsContext" + }, + ") => ", + "MaybePromise", + "<", + "DeprecationsDetails", + "[]>" + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-deprecations-server", + "id": "def-server.RegisterDeprecationsConfig.getDeprecations.$1", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-deprecations-server", + "scope": "server", + "docId": "kibKbnCoreDeprecationsServerPluginApi", + "section": "def-server.GetDeprecationsContext", + "text": "GetDeprecationsContext" + } + ], + "path": "packages/core/deprecations/core-deprecations-server/src/contracts.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx new file mode 100644 index 000000000000..4cfc46a6783d --- /dev/null +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreDeprecationsServerPluginApi +slug: /kibana-dev-docs/api/kbn-core-deprecations-server +title: "@kbn/core-deprecations-server" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-deprecations-server plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] +--- +import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 12 | 0 | 11 | 0 | + +## Server + +### Interfaces + + diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index ff2ce73d80dd..121e45a296a2 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 065e37a2ce14..a86500a5806b 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 95da1b91502e..e752420a17b2 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 5ab1993546f9..d23c31c8e45f 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 6c7c49f5b9f9..88553f1090f2 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index e7e5f7a49156..70e71b507bc9 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 3c6515307e66..2d4248876b9f 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index f5525d48b522..c6193be15ff0 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 14ad843a24fc..e38eae085d90 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 843c2a26461a..ad0d75f396b2 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 569074f6d5e2..ee7655b92ed5 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 7efe8b6d5c88..6a9a091cbaac 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 1e545969194b..3005b722378f 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index ec4bac7e3c93..f7a8b9764070 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 5f57a08cbb32..ece6f0964a69 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 176bf73ab022..76f2e074390a 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index ffaeb7fee7df..f046322d57d8 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 712b795f547f..60c7539c883a 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 690377d74f88..3c08ef3793aa 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 7f4fd0e61fd5..dd8455aafff0 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index a81814631b9a..c2ed09a1778d 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index e5b9ea2a5701..879840bf3f01 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 96b1eb8a6d94..22ff0940495f 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index ac6bde988c37..d1fe03411c99 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 98454c5540df..31f7544da1f0 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index bcad26892304..899465e3a126 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index e7e7efafeabe..d69de9da4521 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 307ee6c12236..56debadb17b7 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index a9c06be70272..32b501a852c0 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 0e89ca32661b..aac7ef1f3372 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 97a4004be412..9f5714094bd6 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index adc13fbbe676..7ffe1548bbea 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 993ad090d3b7..959a5ab37e43 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] --- import kbnCoreInjectedMetadataBrowserObj from './kbn_core_injected_metadata_browser.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 3d7eff7cd5f5..18b839379336 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index e62f851a807a..12cc92fd97e9 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 141f7dc2833a..007261357c0d 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 4d20da7dda16..15f1568cf72e 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 6c1a8a5ffe86..2dc96e88e1bb 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 6726534506b0..091313bb82d9 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 46f34b5465ac..4eaad22e149d 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 9294214f4255..845d0ea59465 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 61ef5a7a51a2..61e6d9a7438f 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 7666183acff5..07495dfbbceb 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 0768d8648c7b..bfcd76241b2d 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 84156ef63abb..21022c33735b 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser_internal.mdx b/api_docs/kbn_core_mount_utils_browser_internal.mdx index 526a23017dbf..04f7ef1573ea 100644 --- a/api_docs/kbn_core_mount_utils_browser_internal.mdx +++ b/api_docs/kbn_core_mount_utils_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser-internal title: "@kbn/core-mount-utils-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser-internal'] --- import kbnCoreMountUtilsBrowserInternalObj from './kbn_core_mount_utils_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 3c29698b00cd..80f658440dd5 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 7573ec8f52e0..e1991947628c 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index c65bcb22ff01..1b3a72143c2d 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index c39e23766cb7..07154ccd1734 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index ce6818e0ad25..a8e3a841c006 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 3388a7f1a3b3..d14022bfcee5 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 37af6696eb09..8615231129c7 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index b73da1ca586d..3ac1bbb69747 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 09490569fb02..5ccfa886462c 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 7b752c736d66..91a0739307d4 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index b4d36cd0b7e5..9aadcdac683a 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 3a3c46b6eb6b..155bf417d58a 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.devdocs.json b/api_docs/kbn_core_saved_objects_api_server.devdocs.json index 09880a311173..762765870418 100644 --- a/api_docs/kbn_core_saved_objects_api_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_server.devdocs.json @@ -5778,6 +5778,68 @@ "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts", "deprecated": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-api-server", + "id": "def-server.SavedObjectsPointInTimeFinderClient", + "type": "Type", + "tags": [], + "label": "SavedObjectsPointInTimeFinderClient", + "description": [], + "signature": [ + "{ find: (options: ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsFindOptions", + "text": "SavedObjectsFindOptions" + }, + ") => Promise<", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsFindResponse", + "text": "SavedObjectsFindResponse" + }, + ">; closePointInTime: (id: string, options?: ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsClosePointInTimeResponse", + "text": "SavedObjectsClosePointInTimeResponse" + }, + ">; openPointInTimeForType: (type: string | string[], options?: ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsOpenPointInTimeOptions", + "text": "SavedObjectsOpenPointInTimeOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-server.SavedObjectsOpenPointInTimeResponse", + "text": "SavedObjectsOpenPointInTimeResponse" + }, + ">; }" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server/src/apis/create_point_in_time_finder.ts", + "deprecated": false, + "initialIsOpen": false } ], "objects": [] diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 42c97103ee4f..afa120ef791e 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact Kibana Core for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 288 | 1 | 125 | 0 | +| 289 | 1 | 126 | 0 | ## Server diff --git a/api_docs/core_saved_objects.devdocs.json b/api_docs/kbn_core_saved_objects_api_server_internal.devdocs.json similarity index 57% rename from api_docs/core_saved_objects.devdocs.json rename to api_docs/kbn_core_saved_objects_api_server_internal.devdocs.json index 86cf67bdb6a5..577628bd0f45 100644 --- a/api_docs/core_saved_objects.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_server_internal.devdocs.json @@ -1,5 +1,5 @@ { - "id": "core.savedObjects", + "id": "@kbn/core-saved-objects-api-server-internal", "client": { "classes": [], "functions": [], @@ -11,471 +11,7 @@ "server": { "classes": [ { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError", - "type": "Class", - "tags": [], - "label": "SavedObjectsExportError", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsExportError", - "text": "SavedObjectsExportError" - }, - " extends Error" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.Unnamed.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.Unnamed.$2", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "signature": [ - "string" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "attributes", - "description": [], - "signature": [ - "Record | undefined" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.exportSizeExceeded", - "type": "Function", - "tags": [], - "label": "exportSizeExceeded", - "description": [], - "signature": [ - "(limit: number) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsExportError", - "text": "SavedObjectsExportError" - } - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.exportSizeExceeded.$1", - "type": "number", - "tags": [], - "label": "limit", - "description": [], - "signature": [ - "number" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.objectFetchError", - "type": "Function", - "tags": [], - "label": "objectFetchError", - "description": [], - "signature": [ - "(objects: ", - "SavedObject", - "[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsExportError", - "text": "SavedObjectsExportError" - } - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.objectFetchError.$1", - "type": "Array", - "tags": [], - "label": "objects", - "description": [], - "signature": [ - "SavedObject", - "[]" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.objectTransformError", - "type": "Function", - "tags": [], - "label": "objectTransformError", - "description": [ - "\nError returned when a {@link SavedObjectsExportTransform | export transform} threw an error" - ], - "signature": [ - "(objects: ", - "SavedObject", - "[], cause: Error) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsExportError", - "text": "SavedObjectsExportError" - } - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.objectTransformError.$1", - "type": "Array", - "tags": [], - "label": "objects", - "description": [], - "signature": [ - "SavedObject", - "[]" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.objectTransformError.$2", - "type": "Object", - "tags": [], - "label": "cause", - "description": [], - "signature": [ - "Error" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.invalidTransformError", - "type": "Function", - "tags": [], - "label": "invalidTransformError", - "description": [ - "\nError returned when a {@link SavedObjectsExportTransform | export transform} performed an invalid operation\nduring the transform, such as removing objects from the export, or changing an object's type or id." - ], - "signature": [ - "(objectKeys: string[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsExportError", - "text": "SavedObjectsExportError" - } - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsExportError.invalidTransformError.$1", - "type": "Array", - "tags": [], - "label": "objectKeys", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/server/saved_objects/export/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError", - "type": "Class", - "tags": [], - "label": "SavedObjectsImportError", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - }, - " extends Error" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.importSizeExceeded", - "type": "Function", - "tags": [], - "label": "importSizeExceeded", - "description": [], - "signature": [ - "(limit: number) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - } - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.importSizeExceeded.$1", - "type": "number", - "tags": [], - "label": "limit", - "description": [], - "signature": [ - "number" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects", - "type": "Function", - "tags": [], - "label": "nonUniqueImportObjects", - "description": [], - "signature": [ - "(nonUniqueEntries: string[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - } - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects.$1", - "type": "Array", - "tags": [], - "label": "nonUniqueEntries", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects", - "type": "Function", - "tags": [], - "label": "nonUniqueRetryObjects", - "description": [], - "signature": [ - "(nonUniqueRetryObjects: string[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - } - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects.$1", - "type": "Array", - "tags": [], - "label": "nonUniqueRetryObjects", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations", - "type": "Function", - "tags": [], - "label": "nonUniqueRetryDestinations", - "description": [], - "signature": [ - "(nonUniqueRetryDestinations: string[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - } - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations.$1", - "type": "Array", - "tags": [], - "label": "nonUniqueRetryDestinations", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.referencesFetchError", - "type": "Function", - "tags": [], - "label": "referencesFetchError", - "description": [], - "signature": [ - "(objects: ", - "SavedObject", - "[]) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsImportError", - "text": "SavedObjectsImportError" - } - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "core", - "id": "def-server.SavedObjectsImportError.referencesFetchError.$1", - "type": "Array", - "tags": [], - "label": "objects", - "description": [], - "signature": [ - "SavedObject", - "[]" - ], - "path": "src/core/server/saved_objects/import/errors.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository", "type": "Class", "tags": [], @@ -483,20 +19,20 @@ "description": [], "signature": [ { - "pluginId": "core", + "pluginId": "@kbn/core-saved-objects-api-server-internal", "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", + "docId": "kibKbnCoreSavedObjectsApiServerInternalPluginApi", "section": "def-server.SavedObjectsRepository", "text": "SavedObjectsRepository" }, " implements ", "ISavedObjectsRepository" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.create", "type": "Function", "tags": [], @@ -511,11 +47,11 @@ "SavedObject", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.create.$1", "type": "string", "tags": [], @@ -524,12 +60,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.create.$2", "type": "Uncategorized", "tags": [], @@ -538,12 +74,12 @@ "signature": [ "T" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.create.$3", "type": "Object", "tags": [], @@ -552,7 +88,7 @@ "signature": [ "SavedObjectsCreateOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -560,7 +96,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkCreate", "type": "Function", "tags": [], @@ -577,11 +113,11 @@ "SavedObjectsBulkResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkCreate.$1", "type": "Array", "tags": [], @@ -591,12 +127,12 @@ "SavedObjectsBulkCreateObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkCreate.$2", "type": "Object", "tags": [], @@ -605,7 +141,7 @@ "signature": [ "SavedObjectsCreateOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -613,7 +149,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.checkConflicts", "type": "Function", "tags": [], @@ -630,11 +166,11 @@ "SavedObjectsCheckConflictsResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.checkConflicts.$1", "type": "Array", "tags": [], @@ -644,12 +180,12 @@ "SavedObjectsCheckConflictsObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.checkConflicts.$2", "type": "Object", "tags": [], @@ -658,7 +194,7 @@ "signature": [ "SavedObjectsBaseOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -666,7 +202,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.delete", "type": "Function", "tags": [], @@ -679,11 +215,11 @@ "SavedObjectsDeleteOptions", ") => Promise<{}>" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.delete.$1", "type": "string", "tags": [], @@ -692,12 +228,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.delete.$2", "type": "string", "tags": [], @@ -706,12 +242,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.delete.$3", "type": "Object", "tags": [], @@ -720,7 +256,7 @@ "signature": [ "SavedObjectsDeleteOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -728,7 +264,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.deleteByNamespace", "type": "Function", "tags": [], @@ -741,11 +277,11 @@ "SavedObjectsDeleteByNamespaceOptions", ") => Promise" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.deleteByNamespace.$1", "type": "string", "tags": [], @@ -754,12 +290,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.deleteByNamespace.$2", "type": "Object", "tags": [], @@ -768,7 +304,7 @@ "signature": [ "SavedObjectsDeleteByNamespaceOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -776,7 +312,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.find", "type": "Function", "tags": [], @@ -791,11 +327,11 @@ "SavedObjectsFindResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.find.$1", "type": "Object", "tags": [], @@ -804,7 +340,7 @@ "signature": [ "SavedObjectsFindOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -812,7 +348,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkGet", "type": "Function", "tags": [], @@ -829,11 +365,11 @@ "SavedObjectsBulkResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkGet.$1", "type": "Array", "tags": [], @@ -843,12 +379,12 @@ "SavedObjectsBulkGetObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkGet.$2", "type": "Object", "tags": [], @@ -857,7 +393,7 @@ "signature": [ "SavedObjectsBaseOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -865,7 +401,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkResolve", "type": "Function", "tags": [], @@ -882,11 +418,11 @@ "SavedObjectsBulkResolveResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkResolve.$1", "type": "Array", "tags": [], @@ -896,12 +432,12 @@ "SavedObjectsBulkResolveObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkResolve.$2", "type": "Object", "tags": [], @@ -910,7 +446,7 @@ "signature": [ "SavedObjectsBaseOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -918,7 +454,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.get", "type": "Function", "tags": [], @@ -933,11 +469,11 @@ "SavedObject", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.get.$1", "type": "string", "tags": [], @@ -946,12 +482,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.get.$2", "type": "string", "tags": [], @@ -960,12 +496,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.get.$3", "type": "Object", "tags": [], @@ -974,7 +510,7 @@ "signature": [ "SavedObjectsBaseOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -982,7 +518,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.resolve", "type": "Function", "tags": [], @@ -997,11 +533,11 @@ "SavedObjectsResolveResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.resolve.$1", "type": "string", "tags": [], @@ -1010,12 +546,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.resolve.$2", "type": "string", "tags": [], @@ -1024,12 +560,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.resolve.$3", "type": "Object", "tags": [], @@ -1038,7 +574,7 @@ "signature": [ "SavedObjectsBaseOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -1046,7 +582,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.update", "type": "Function", "tags": [], @@ -1061,11 +597,11 @@ "SavedObjectsUpdateResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.update.$1", "type": "string", "tags": [], @@ -1074,12 +610,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.update.$2", "type": "string", "tags": [], @@ -1088,12 +624,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.update.$3", "type": "Object", "tags": [], @@ -1102,12 +638,12 @@ "signature": [ "Partial" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.update.$4", "type": "Object", "tags": [], @@ -1117,7 +653,7 @@ "SavedObjectsUpdateOptions", "" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -1125,7 +661,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences", "type": "Function", "tags": [], @@ -1142,11 +678,11 @@ "SavedObjectsCollectMultiNamespaceReferencesResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences.$1", "type": "Array", "tags": [], @@ -1156,12 +692,12 @@ "SavedObjectsCollectMultiNamespaceReferencesObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.collectMultiNamespaceReferences.$2", "type": "Object", "tags": [], @@ -1171,7 +707,7 @@ "SavedObjectsCollectMultiNamespaceReferencesOptions", " | undefined" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": false } @@ -1179,7 +715,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.updateObjectsSpaces", "type": "Function", "tags": [], @@ -1196,11 +732,11 @@ "SavedObjectsUpdateObjectsSpacesResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$1", "type": "Array", "tags": [], @@ -1210,12 +746,12 @@ "SavedObjectsUpdateObjectsSpacesObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$2", "type": "Array", "tags": [], @@ -1224,12 +760,12 @@ "signature": [ "string[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$3", "type": "Array", "tags": [], @@ -1238,12 +774,12 @@ "signature": [ "string[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.updateObjectsSpaces.$4", "type": "Object", "tags": [], @@ -1253,7 +789,7 @@ "SavedObjectsUpdateObjectsSpacesOptions", " | undefined" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": false } @@ -1261,7 +797,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkUpdate", "type": "Function", "tags": [], @@ -1278,11 +814,11 @@ "SavedObjectsBulkUpdateResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkUpdate.$1", "type": "Array", "tags": [], @@ -1292,12 +828,12 @@ "SavedObjectsBulkUpdateObject", "[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.bulkUpdate.$2", "type": "Object", "tags": [], @@ -1306,7 +842,7 @@ "signature": [ "SavedObjectsBulkUpdateOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -1314,7 +850,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.removeReferencesTo", "type": "Function", "tags": [], @@ -1329,11 +865,11 @@ "SavedObjectsRemoveReferencesToResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.removeReferencesTo.$1", "type": "string", "tags": [], @@ -1342,12 +878,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.removeReferencesTo.$2", "type": "string", "tags": [], @@ -1356,12 +892,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.removeReferencesTo.$3", "type": "Object", "tags": [], @@ -1370,7 +906,7 @@ "signature": [ "SavedObjectsRemoveReferencesToOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -1378,7 +914,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.incrementCounter", "type": "Function", "tags": [], @@ -1395,11 +931,11 @@ "SavedObject", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.incrementCounter.$1", "type": "string", "tags": [], @@ -1408,12 +944,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.incrementCounter.$2", "type": "string", "tags": [], @@ -1422,12 +958,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.incrementCounter.$3", "type": "Array", "tags": [], @@ -1438,12 +974,12 @@ "SavedObjectsIncrementCounterField", ")[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.incrementCounter.$4", "type": "Object", "tags": [], @@ -1453,7 +989,7 @@ "SavedObjectsIncrementCounterOptions", " | undefined" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": false } @@ -1461,7 +997,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.openPointInTimeForType", "type": "Function", "tags": [], @@ -1476,11 +1012,11 @@ "SavedObjectsOpenPointInTimeResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.openPointInTimeForType.$1", "type": "CompoundType", "tags": [], @@ -1489,12 +1025,12 @@ "signature": [ "string | string[]" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.openPointInTimeForType.$2", "type": "Object", "tags": [], @@ -1503,7 +1039,7 @@ "signature": [ "SavedObjectsOpenPointInTimeOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true } @@ -1511,7 +1047,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.closePointInTime", "type": "Function", "tags": [], @@ -1526,11 +1062,11 @@ "SavedObjectsClosePointInTimeResponse", ">" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.closePointInTime.$1", "type": "string", "tags": [], @@ -1539,12 +1075,12 @@ "signature": [ "string" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.closePointInTime.$2", "type": "Object", "tags": [], @@ -1554,7 +1090,7 @@ "SavedObjectsBaseOptions", " | undefined" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": false } @@ -1562,7 +1098,7 @@ "returnComment": [] }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.createPointInTimeFinder", "type": "Function", "tags": [], @@ -1579,11 +1115,11 @@ "ISavedObjectsPointInTimeFinder", "" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "children": [ { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.createPointInTimeFinder.$1", "type": "Object", "tags": [], @@ -1592,12 +1128,12 @@ "signature": [ "SavedObjectsCreatePointInTimeFinderOptions" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": true }, { - "parentPluginId": "core", + "parentPluginId": "@kbn/core-saved-objects-api-server-internal", "id": "def-server.SavedObjectsRepository.createPointInTimeFinder.$2", "type": "Object", "tags": [], @@ -1607,7 +1143,7 @@ "SavedObjectsCreatePointInTimeFinderDependencies", " | undefined" ], - "path": "src/core/server/saved_objects/service/lib/repository.ts", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.ts", "deprecated": false, "isRequired": false } diff --git a/api_docs/kbn_core_saved_objects_api_server_internal.mdx b/api_docs/kbn_core_saved_objects_api_server_internal.mdx new file mode 100644 index 000000000000..682ecaecc2a6 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_api_server_internal.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsApiServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-internal +title: "@kbn/core-saved-objects-api-server-internal" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-api-server-internal plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-internal'] +--- +import kbnCoreSavedObjectsApiServerInternalObj from './kbn_core_saved_objects_api_server_internal.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 68 | 0 | 49 | 0 | + +## Server + +### Classes + + diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.devdocs.json b/api_docs/kbn_core_saved_objects_api_server_mocks.devdocs.json new file mode 100644 index 000000000000..fda954632c11 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.devdocs.json @@ -0,0 +1,118 @@ +{ + "id": "@kbn/core-saved-objects-api-server-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsClientMock", + "type": "Object", + "tags": [], + "label": "savedObjectsClientMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsClientMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked<", + "SavedObjectsClientContract", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_client.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsClientProviderMock", + "type": "Object", + "tags": [], + "label": "savedObjectsClientProviderMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/scoped_client_provider.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsClientProviderMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsClientProvider", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/scoped_client_provider.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsRepositoryMock", + "type": "Object", + "tags": [], + "label": "savedObjectsRepositoryMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-api-server-mocks", + "id": "def-server.savedObjectsRepositoryMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsRepository", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-api-server-mocks/src/repository.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx new file mode 100644 index 000000000000..3825fbc5c9e1 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsApiServerMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks +title: "@kbn/core-saved-objects-api-server-mocks" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] +--- +import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 6 | 0 | 6 | 0 | + +## Server + +### Objects + + diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json b/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json index b30cc8fc4006..1a252b3e7457 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json @@ -278,6 +278,37 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/core-saved-objects-base-server-internal", + "id": "def-server.getIndexForType", + "type": "Function", + "tags": [], + "label": "getIndexForType", + "description": [], + "signature": [ + "({ type, typeRegistry, defaultIndex, kibanaVersion, }: GetIndexForTypeOptions) => string" + ], + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-base-server-internal", + "id": "def-server.getIndexForType.$1", + "type": "Object", + "tags": [], + "label": "{\n type,\n typeRegistry,\n defaultIndex,\n kibanaVersion,\n}", + "description": [], + "signature": [ + "GetIndexForTypeOptions" + ], + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/utils/get_index_for_type.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/core-saved-objects-base-server-internal", "id": "def-server.getProperty", diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 2c20dc024301..88d6a5798ac1 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,20 +8,20 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; -Contact [Owner missing] for questions regarding this plugin. +Contact Kibana Core for questions regarding this plugin. **Code health stats** | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 35 | 0 | 29 | 1 | +| 37 | 0 | 31 | 1 | ## Server diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 25a26f194c8a..0c5b34f659e6 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; -Contact [Owner missing] for questions regarding this plugin. +Contact Kibana Core for questions regarding this plugin. **Code health stats** diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 609a8cf777dd..94b810da5a95 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 35c1a7f03487..518486fae1d6 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 9b8b12f8e9a4..b17f92f925c6 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 8ef70538abe0..2d98e39eafbc 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.devdocs.json b/api_docs/kbn_core_saved_objects_import_export_server_internal.devdocs.json new file mode 100644 index 000000000000..0e2ceef3199f --- /dev/null +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.devdocs.json @@ -0,0 +1,492 @@ +{ + "id": "@kbn/core-saved-objects-import-export-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError", + "type": "Class", + "tags": [], + "label": "SavedObjectsExportError", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsExportError", + "text": "SavedObjectsExportError" + }, + " extends Error" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.Unnamed.$2", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "attributes", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.exportSizeExceeded", + "type": "Function", + "tags": [], + "label": "exportSizeExceeded", + "description": [], + "signature": [ + "(limit: number) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsExportError", + "text": "SavedObjectsExportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.exportSizeExceeded.$1", + "type": "number", + "tags": [], + "label": "limit", + "description": [], + "signature": [ + "number" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.objectFetchError", + "type": "Function", + "tags": [], + "label": "objectFetchError", + "description": [], + "signature": [ + "(objects: ", + "SavedObject", + "[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsExportError", + "text": "SavedObjectsExportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.objectFetchError.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObject", + "[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.objectTransformError", + "type": "Function", + "tags": [], + "label": "objectTransformError", + "description": [ + "\nError returned when a {@link SavedObjectsExportTransform | export transform} threw an error" + ], + "signature": [ + "(objects: ", + "SavedObject", + "[], cause: Error) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsExportError", + "text": "SavedObjectsExportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.objectTransformError.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObject", + "[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.objectTransformError.$2", + "type": "Object", + "tags": [], + "label": "cause", + "description": [], + "signature": [ + "Error" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.invalidTransformError", + "type": "Function", + "tags": [], + "label": "invalidTransformError", + "description": [ + "\nError returned when a {@link SavedObjectsExportTransform | export transform} performed an invalid operation\nduring the transform, such as removing objects from the export, or changing an object's type or id." + ], + "signature": [ + "(objectKeys: string[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsExportError", + "text": "SavedObjectsExportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsExportError.invalidTransformError.$1", + "type": "Array", + "tags": [], + "label": "objectKeys", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError", + "type": "Class", + "tags": [], + "label": "SavedObjectsImportError", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + }, + " extends Error" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.importSizeExceeded", + "type": "Function", + "tags": [], + "label": "importSizeExceeded", + "description": [], + "signature": [ + "(limit: number) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.importSizeExceeded.$1", + "type": "number", + "tags": [], + "label": "limit", + "description": [], + "signature": [ + "number" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects", + "type": "Function", + "tags": [], + "label": "nonUniqueImportObjects", + "description": [], + "signature": [ + "(nonUniqueEntries: string[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueImportObjects.$1", + "type": "Array", + "tags": [], + "label": "nonUniqueEntries", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects", + "type": "Function", + "tags": [], + "label": "nonUniqueRetryObjects", + "description": [], + "signature": [ + "(nonUniqueRetryObjects: string[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryObjects.$1", + "type": "Array", + "tags": [], + "label": "nonUniqueRetryObjects", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations", + "type": "Function", + "tags": [], + "label": "nonUniqueRetryDestinations", + "description": [], + "signature": [ + "(nonUniqueRetryDestinations: string[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.nonUniqueRetryDestinations.$1", + "type": "Array", + "tags": [], + "label": "nonUniqueRetryDestinations", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.referencesFetchError", + "type": "Function", + "tags": [], + "label": "referencesFetchError", + "description": [], + "signature": [ + "(objects: ", + "SavedObject", + "[]) => ", + { + "pluginId": "@kbn/core-saved-objects-import-export-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsImportExportServerInternalPluginApi", + "section": "def-server.SavedObjectsImportError", + "text": "SavedObjectsImportError" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-internal", + "id": "def-server.SavedObjectsImportError.referencesFetchError.$1", + "type": "Array", + "tags": [], + "label": "objects", + "description": [], + "signature": [ + "SavedObject", + "[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/import/errors.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx new file mode 100644 index 000000000000..32ab892600ad --- /dev/null +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsImportExportServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal +title: "@kbn/core-saved-objects-import-export-server-internal" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] +--- +import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 25 | 0 | 23 | 0 | + +## Server + +### Classes + + diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.devdocs.json b/api_docs/kbn_core_saved_objects_import_export_server_mocks.devdocs.json new file mode 100644 index 000000000000..5f5d8adce238 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.devdocs.json @@ -0,0 +1,88 @@ +{ + "id": "@kbn/core-saved-objects-import-export-server-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-mocks", + "id": "def-server.savedObjectsExporterMock", + "type": "Object", + "tags": [], + "label": "savedObjectsExporterMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_exporter.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-mocks", + "id": "def-server.savedObjectsExporterMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsExporter", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_exporter.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-mocks", + "id": "def-server.savedObjectsImporterMock", + "type": "Object", + "tags": [], + "label": "savedObjectsImporterMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_importer.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-import-export-server-mocks", + "id": "def-server.savedObjectsImporterMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsImporter", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-import-export-server-mocks/src/saved_objects_importer.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx new file mode 100644 index 000000000000..f103ccd43ff0 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsImportExportServerMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks +title: "@kbn/core-saved-objects-import-export-server-mocks" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] +--- +import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 4 | 0 | + +## Server + +### Objects + + diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json new file mode 100644 index 000000000000..15dd1ce313de --- /dev/null +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json @@ -0,0 +1,1599 @@ +{ + "id": "@kbn/core-saved-objects-migration-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator", + "type": "Class", + "tags": [], + "label": "KibanaMigrator", + "description": [ + "\nManages the shape of mappings and documents in the Kibana index." + ], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-migration-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsMigrationServerInternalPluginApi", + "section": "def-server.KibanaMigrator", + "text": "KibanaMigrator" + }, + " implements ", + "IKibanaMigrator" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.kibanaVersion", + "type": "string", + "tags": [], + "label": "kibanaVersion", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nCreates an instance of KibanaMigrator." + ], + "signature": [ + "any" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "{\n client,\n typeRegistry,\n kibanaIndex,\n soMigrationsConfig,\n kibanaVersion,\n logger,\n docLinks,\n }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-migration-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsMigrationServerInternalPluginApi", + "section": "def-server.KibanaMigratorOptions", + "text": "KibanaMigratorOptions" + } + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.runMigrations", + "type": "Function", + "tags": [], + "label": "runMigrations", + "description": [], + "signature": [ + "({ rerun }?: { rerun?: boolean | undefined; }) => Promise<", + "MigrationResult", + "[]>" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.runMigrations.$1", + "type": "Object", + "tags": [], + "label": "{ rerun = false }", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.runMigrations.$1.rerun", + "type": "CompoundType", + "tags": [], + "label": "rerun", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.prepareMigrations", + "type": "Function", + "tags": [], + "label": "prepareMigrations", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.getStatus$", + "type": "Function", + "tags": [], + "label": "getStatus$", + "description": [], + "signature": [ + "() => ", + "Observable", + "<", + "KibanaMigratorStatus", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.getActiveMappings", + "type": "Function", + "tags": [], + "label": "getActiveMappings", + "description": [], + "signature": [ + "() => ", + "IndexMapping" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.migrateDocument", + "type": "Function", + "tags": [], + "label": "migrateDocument", + "description": [], + "signature": [ + "(doc: ", + "SavedObjectUnsanitizedDoc", + ") => ", + "SavedObjectUnsanitizedDoc", + "" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigrator.migrateDocument.$1", + "type": "CompoundType", + "tags": [], + "label": "doc", + "description": [], + "signature": [ + "SavedObjectUnsanitizedDoc", + "" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.buildActiveMappings", + "type": "Function", + "tags": [], + "label": "buildActiveMappings", + "description": [ + "\nCreates an index mapping with the core properties required by saved object\nindices, as well as the specified additional properties.\n" + ], + "signature": [ + "(typeDefinitions: ", + "SavedObjectsMappingProperties", + " | ", + "SavedObjectsTypeMappingDefinitions", + ") => ", + "IndexMapping" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.buildActiveMappings.$1", + "type": "CompoundType", + "tags": [], + "label": "typeDefinitions", + "description": [ + "- the type definitions to build mapping from." + ], + "signature": [ + "SavedObjectsMappingProperties", + " | ", + "SavedObjectsTypeMappingDefinitions" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_active_mappings.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.mergeTypes", + "type": "Function", + "tags": [], + "label": "mergeTypes", + "description": [ + "\nMerges savedObjectMappings properties into a single object, verifying that\nno mappings are redefined." + ], + "signature": [ + "(types: ", + "SavedObjectsType", + "[]) => ", + "SavedObjectsTypeMappingDefinitions" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.mergeTypes.$1", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "SavedObjectsType", + "[]" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions", + "type": "Interface", + "tags": [], + "label": "KibanaMigratorOptions", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.client", + "type": "Object", + "tags": [], + "label": "client", + "description": [], + "signature": [ + "{ get: { (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetResponse", + ">; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetResponse", + ", unknown>>; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetResponse", + ">; }; delete: { (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; cluster: ", + "default", + "; eql: ", + "default", + "; search: { >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchResponse", + ">; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchResponse", + ", unknown>>; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchResponse", + ">; }; create: { (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; monitoring: ", + "default", + "; security: ", + "default", + "; name: string | symbol; index: { (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; update: { (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateResponse", + ">; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateResponse", + ", unknown>>; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateResponse", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "default", + "; helpers: ", + "default", + "; child: (opts: ", + "ClientOptions", + ") => ", + "default", + "; Internal: ", + "default", + "; asyncSearch: ", + "default", + "; autoscaling: ", + "default", + "; bulk: { (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "BulkResponse", + ">; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "BulkResponse", + ", unknown>>; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "BulkResponse", + ">; }; cat: ", + "default", + "; ccr: ", + "default", + "; clearScroll: { (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClearScrollResponse", + ">; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClearScrollResponse", + ", unknown>>; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClearScrollResponse", + ">; }; closePointInTime: { (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClosePointInTimeResponse", + ", unknown>>; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; }; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", + "default", + "; deleteByQuery: { (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "DeleteByQueryResponse", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; }; deleteByQueryRethrottle: { (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TasksTaskListResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; }; deleteScript: { (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; enrich: ", + "default", + "; exists: { (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; existsSource: { (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; explain: { (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ExplainResponse", + ">; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ExplainResponse", + ", unknown>>; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ExplainResponse", + ">; }; features: ", + "default", + "; fieldCaps: { (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "FieldCapsResponse", + ">; (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "FieldCapsResponse", + ", unknown>>; (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "FieldCapsResponse", + ">; }; fleet: ", + "default", + "; getScript: { (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptResponse", + ">; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptResponse", + ", unknown>>; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptResponse", + ">; }; getScriptContext: { (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptContextResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; }; getScriptLanguages: { (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptLanguagesResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; }; getSource: { (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; graph: ", + "default", + "; ilm: ", + "default", + "; indices: ", + "default", + "; info: { (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "InfoResponse", + ">; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "InfoResponse", + ", unknown>>; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "InfoResponse", + ">; }; ingest: ", + "default", + "; knnSearch: { (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "KnnSearchResponse", + ">; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "KnnSearchResponse", + ", unknown>>; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "KnnSearchResponse", + ">; }; license: ", + "default", + "; logstash: ", + "default", + "; mget: { (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MgetResponse", + ">; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MgetResponse", + ", unknown>>; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MgetResponse", + ">; }; migration: ", + "default", + "; ml: ", + "default", + "; msearch: { >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchResponse", + ">; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchResponse", + ", unknown>>; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchResponse", + ">; }; msearchTemplate: { >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchTemplateResponse", + ", unknown>>; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; }; mtermvectors: { (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MtermvectorsResponse", + ", unknown>>; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; }; nodes: ", + "default", + "; openPointInTime: { (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "OpenPointInTimeResponse", + ", unknown>>; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; }; ping: { (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; putScript: { (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; rankEval: { (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RankEvalResponse", + ">; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RankEvalResponse", + ", unknown>>; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RankEvalResponse", + ">; }; reindex: { (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexResponse", + ">; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexResponse", + ", unknown>>; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexResponse", + ">; }; reindexRethrottle: { (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexRethrottleResponse", + ", unknown>>; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; }; renderSearchTemplate: { (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RenderSearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; }; rollup: ", + "default", + "; scriptsPainlessExecute: { (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScriptsPainlessExecuteResponse", + ", unknown>>; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; }; scroll: { >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScrollResponse", + ">; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScrollResponse", + ", unknown>>; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScrollResponse", + ">; }; searchMvt: { (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; searchShards: { (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchShardsResponse", + ">; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchShardsResponse", + ", unknown>>; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchShardsResponse", + ">; }; searchTemplate: { (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; }; searchableSnapshots: ", + "default", + "; shutdown: ", + "default", + "; slm: ", + "default", + "; snapshot: ", + "default", + "; sql: ", + "default", + "; ssl: ", + "default", + "; tasks: ", + "default", + "; termsEnum: { (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermsEnumResponse", + ">; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermsEnumResponse", + ", unknown>>; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermsEnumResponse", + ">; }; termvectors: { (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermvectorsResponse", + ">; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermvectorsResponse", + ", unknown>>; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermvectorsResponse", + ">; }; textStructure: ", + "default", + "; transform: ", + "default", + "; updateByQuery: { (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; }; updateByQueryRethrottle: { (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryRethrottleResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; }; watcher: ", + "default", + "; xpack: ", + "default", + "; }" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.typeRegistry", + "type": "Object", + "tags": [], + "label": "typeRegistry", + "description": [], + "signature": [ + "ISavedObjectTypeRegistry" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.soMigrationsConfig", + "type": "Object", + "tags": [], + "label": "soMigrationsConfig", + "description": [], + "signature": [ + "{ readonly discardUnknownObjects?: string | undefined; readonly discardCorruptObjects?: string | undefined; readonly pollInterval: number; readonly skip: boolean; readonly batchSize: number; readonly maxBatchSizeBytes: ", + "ByteSizeValue", + "; readonly scrollDuration: string; readonly retryAttempts: number; }" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.kibanaIndex", + "type": "string", + "tags": [], + "label": "kibanaIndex", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.kibanaVersion", + "type": "string", + "tags": [], + "label": "kibanaVersion", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-internal", + "id": "def-server.KibanaMigratorOptions.docLinks", + "type": "Object", + "tags": [], + "label": "docLinks", + "description": [], + "signature": [ + "DocLinksServiceSetup" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx new file mode 100644 index 000000000000..71fe70097ed9 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsMigrationServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal +title: "@kbn/core-saved-objects-migration-server-internal" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] +--- +import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 24 | 0 | 19 | 0 | + +## Server + +### Functions + + +### Classes + + +### Interfaces + + diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_mocks.devdocs.json new file mode 100644 index 000000000000..263ed264bba0 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.devdocs.json @@ -0,0 +1,202 @@ +{ + "id": "@kbn/core-saved-objects-migration-server-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.createSavedObjectsMigrationLoggerMock", + "type": "Function", + "tags": [], + "label": "createSavedObjectsMigrationLoggerMock", + "description": [], + "signature": [ + "() => jest.Mocked<", + "SavedObjectsMigrationLogger", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.retryAsync", + "type": "Function", + "tags": [], + "label": "retryAsync", + "description": [], + "signature": [ + "(fn: () => Promise, options: { retryAttempts: number; retryDelayMs: number; }) => Promise" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.retryAsync.$1", + "type": "Function", + "tags": [], + "label": "fn", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.retryAsync.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.retryAsync.$2.retryAttempts", + "type": "number", + "tags": [], + "label": "retryAttempts", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.retryAsync.$2.retryDelayMs", + "type": "number", + "tags": [], + "label": "retryDelayMs", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/helpers/retry_async.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.migrationMocks", + "type": "Object", + "tags": [], + "label": "migrationMocks", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.migrationMocks.createContext", + "type": "Function", + "tags": [], + "label": "createContext", + "description": [], + "signature": [ + "({ migrationVersion, convertToMultiNamespaceTypeVersion, isSingleNamespaceType, }?: { migrationVersion?: string | undefined; convertToMultiNamespaceTypeVersion?: string | undefined; isSingleNamespaceType?: boolean | undefined; }) => jest.Mocked<", + "SavedObjectMigrationContext", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.migrationMocks.createContext.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ migrationVersion?: string | undefined; convertToMultiNamespaceTypeVersion?: string | undefined; isSingleNamespaceType?: boolean | undefined; }" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/migration.mocks.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.mockKibanaMigrator", + "type": "Object", + "tags": [], + "label": "mockKibanaMigrator", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.mockKibanaMigrator.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "({ types, }?: { types: ", + "SavedObjectsType", + "[]; }) => jest.Mocked<", + "IKibanaMigrator", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-migration-server-mocks", + "id": "def-server.mockKibanaMigrator.create.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ types: ", + "SavedObjectsType", + "[]; }" + ], + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx new file mode 100644 index 000000000000..59b1381365e1 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsMigrationServerMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks +title: "@kbn/core-saved-objects-migration-server-mocks" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] +--- +import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 12 | 0 | 12 | 0 | + +## Server + +### Objects + + +### Functions + + diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 9db921feffe7..367db5b0be3e 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.devdocs.json b/api_docs/kbn_core_saved_objects_server_internal.devdocs.json new file mode 100644 index 000000000000..c474d9393c9d --- /dev/null +++ b/api_docs/kbn_core_saved_objects_server_internal.devdocs.json @@ -0,0 +1,185 @@ +{ + "id": "@kbn/core-saved-objects-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService", + "type": "Class", + "tags": [], + "label": "SavedObjectsService", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-server-internal", + "scope": "server", + "docId": "kibKbnCoreSavedObjectsServerInternalPluginApi", + "section": "def-server.SavedObjectsService", + "text": "SavedObjectsService" + }, + " implements ", + "CoreService", + "<", + "InternalSavedObjectsServiceSetup", + ", ", + "SavedObjectsServiceStart", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "coreContext", + "description": [], + "signature": [ + "CoreContext" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "(setupDeps: ", + "SavedObjectsSetupDeps", + ") => Promise<", + "InternalSavedObjectsServiceSetup", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.setup.$1", + "type": "Object", + "tags": [], + "label": "setupDeps", + "description": [], + "signature": [ + "SavedObjectsSetupDeps" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "({ elasticsearch, pluginsInitialized, docLinks, }: ", + "SavedObjectsStartDeps", + ") => Promise<", + "SavedObjectsServiceStart", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.start.$1", + "type": "Object", + "tags": [], + "label": "{\n elasticsearch,\n pluginsInitialized = true,\n docLinks,\n }", + "description": [], + "signature": [ + "SavedObjectsStartDeps" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.SavedObjectsService.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-internal", + "id": "def-server.InternalSavedObjectsServiceStart", + "type": "Type", + "tags": [], + "label": "InternalSavedObjectsServiceStart", + "description": [], + "signature": [ + "SavedObjectsServiceStart" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx new file mode 100644 index 000000000000..8658b323897e --- /dev/null +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal +title: "@kbn/core-saved-objects-server-internal" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-server-internal plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] +--- +import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 9 | 0 | 9 | 3 | + +## Server + +### Classes + + +### Consts, variables and types + + diff --git a/api_docs/kbn_core_saved_objects_server_mocks.devdocs.json b/api_docs/kbn_core_saved_objects_server_mocks.devdocs.json new file mode 100644 index 000000000000..b5300ea9814a --- /dev/null +++ b/api_docs/kbn_core_saved_objects_server_mocks.devdocs.json @@ -0,0 +1,261 @@ +{ + "id": "@kbn/core-saved-objects-server-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock", + "type": "Object", + "tags": [], + "label": "savedObjectsServiceMock", + "description": [], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createInternalSetupContract", + "type": "Function", + "tags": [], + "label": "createInternalSetupContract", + "description": [], + "signature": [ + "() => jest.Mocked<", + "InternalSavedObjectsServiceSetup", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createSetupContract", + "type": "Function", + "tags": [], + "label": "createSetupContract", + "description": [], + "signature": [ + "() => jest.Mocked<", + "SavedObjectsServiceSetup", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createInternalStartContract", + "type": "Function", + "tags": [], + "label": "createInternalStartContract", + "description": [], + "signature": [ + "(typeRegistry?: jest.Mocked<", + "ISavedObjectTypeRegistry", + "> | undefined) => jest.Mocked<", + "SavedObjectsServiceStart", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createInternalStartContract.$1", + "type": "CompoundType", + "tags": [], + "label": "typeRegistry", + "description": [], + "signature": [ + "jest.Mocked<", + "ISavedObjectTypeRegistry", + "> | undefined" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createStartContract", + "type": "Function", + "tags": [], + "label": "createStartContract", + "description": [], + "signature": [ + "(typeRegistry?: jest.Mocked<", + "ISavedObjectTypeRegistry", + "> | undefined) => jest.Mocked<", + "SavedObjectsServiceStart", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createStartContract.$1", + "type": "CompoundType", + "tags": [], + "label": "typeRegistry", + "description": [], + "signature": [ + "jest.Mocked<", + "ISavedObjectTypeRegistry", + "> | undefined" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createMigrationContext", + "type": "Function", + "tags": [], + "label": "createMigrationContext", + "description": [], + "signature": [ + "({ migrationVersion, convertToMultiNamespaceTypeVersion, isSingleNamespaceType, }?: { migrationVersion?: string | undefined; convertToMultiNamespaceTypeVersion?: string | undefined; isSingleNamespaceType?: boolean | undefined; } | undefined) => jest.Mocked<", + "SavedObjectMigrationContext", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createMigrationContext.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ migrationVersion?: string | undefined; convertToMultiNamespaceTypeVersion?: string | undefined; isSingleNamespaceType?: boolean | undefined; } | undefined" + ], + "path": "node_modules/@types/kbn__core-saved-objects-migration-server-mocks/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createTypeRegistryMock", + "type": "Function", + "tags": [], + "label": "createTypeRegistryMock", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectTypeRegistry", + " & Pick<", + "SavedObjectTypeRegistry", + ", \"registerType\">>" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createExporter", + "type": "Function", + "tags": [], + "label": "createExporter", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsExporter", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createImporter", + "type": "Function", + "tags": [], + "label": "createImporter", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsImporter", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-saved-objects-server-mocks", + "id": "def-server.savedObjectsServiceMock.createSerializer", + "type": "Function", + "tags": [], + "label": "createSerializer", + "description": [], + "signature": [ + "() => jest.Mocked<", + "ISavedObjectsSerializer", + ">" + ], + "path": "packages/core/saved-objects/core-saved-objects-server-mocks/src/saved_objects_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx new file mode 100644 index 000000000000..cbf40027ce54 --- /dev/null +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreSavedObjectsServerMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks +title: "@kbn/core-saved-objects-server-mocks" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-saved-objects-server-mocks plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] +--- +import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 14 | 0 | 13 | 0 | + +## Server + +### Objects + + diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index dbf94cccdfb2..33941dee2e3c 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; -Contact [Owner missing] for questions regarding this plugin. +Contact Kibana Core for questions regarding this plugin. **Code health stats** diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 291ac1065813..96346ef30cdf 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index bd22230b40c0..355643341388 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 11b728694818..7b48ab0953a3 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 43125675ac1d..160d3d4fb89f 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 3f2734d440bd..4b24e2b55634 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 4b81d752504b..57cef0e86086 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 30585ecd5b00..77c012ae999d 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 7302a32c6e00..e1b5be06c5bc 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 53f556e76369..a8d10159e22f 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.devdocs.json b/api_docs/kbn_core_usage_data_server.devdocs.json new file mode 100644 index 000000000000..b35c04c622a0 --- /dev/null +++ b/api_docs/kbn_core_usage_data_server.devdocs.json @@ -0,0 +1,2031 @@ +{ + "id": "@kbn/core-usage-data-server", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData", + "type": "Interface", + "tags": [], + "label": "CoreConfigUsageData", + "description": [ + "\nUsage data on this cluster's configuration of Core features" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "{ sniffOnStart: boolean; sniffIntervalMs?: number | undefined; sniffOnConnectionFault: boolean; numberOfHostsConfigured: number; requestHeadersWhitelistConfigured: boolean; customHeadersConfigured: boolean; shardTimeoutMs: number; requestTimeoutMs: number; pingTimeoutMs: number; logQueries: boolean; ssl: { verificationMode: \"none\" | \"full\" | \"certificate\"; certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; alwaysPresentCertificate: boolean; }; apiVersion: string; healthCheckDelayMs: number; principal: \"unknown\" | \"elastic_user\" | \"kibana_user\" | \"kibana_system_user\" | \"other_user\" | \"kibana_service_account\"; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [], + "signature": [ + "{ basePathConfigured: boolean; maxPayloadInBytes: number; rewriteBasePath: boolean; keepaliveTimeout: number; socketTimeout: number; compression: { enabled: boolean; referrerWhitelistConfigured: boolean; }; xsrf: { disableProtection: boolean; allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; ipAllowlistConfigured: boolean; }; ssl: { certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; cipherSuites: string[]; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; redirectHttpFromPortConfigured: boolean; supportedProtocols: string[]; clientAuthentication: \"optional\" | \"none\" | \"required\"; }; securityResponseHeaders: { strictTransportSecurity: string; xContentTypeOptions: string; referrerPolicy: string; permissionsPolicyConfigured: boolean; disableEmbedding: boolean; }; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData.logging", + "type": "Object", + "tags": [], + "label": "logging", + "description": [], + "signature": [ + "{ appendersTypesUsed: string[]; loggersConfiguredCount: number; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "{ customIndex: boolean; maxImportPayloadBytes: number; maxImportExportSize: number; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreConfigUsageData.deprecatedKeys", + "type": "Object", + "tags": [], + "label": "deprecatedKeys", + "description": [], + "signature": [ + "{ set: string[]; unset: string[]; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreEnvironmentUsageData", + "type": "Interface", + "tags": [], + "label": "CoreEnvironmentUsageData", + "description": [ + "\nUsage data on this Kibana node's runtime environment." + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreEnvironmentUsageData.memory", + "type": "Object", + "tags": [], + "label": "memory", + "description": [], + "signature": [ + "{ heapTotalBytes: number; heapUsedBytes: number; heapSizeLimit: number; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementCounterParams", + "type": "Interface", + "tags": [], + "label": "CoreIncrementCounterParams", + "description": [], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementCounterParams.counterName", + "type": "string", + "tags": [], + "label": "counterName", + "description": [ + "The name of the counter" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementCounterParams.counterType", + "type": "string", + "tags": [], + "label": "counterType", + "description": [ + "The counter type (\"count\" by default)" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementCounterParams.incrementBy", + "type": "number", + "tags": [], + "label": "incrementBy", + "description": [ + "Increment the counter by this number (1 if not specified)" + ], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreServicesUsageData", + "type": "Interface", + "tags": [], + "label": "CoreServicesUsageData", + "description": [ + "\nUsage data from Core services" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreServicesUsageData.savedObjects", + "type": "Object", + "tags": [], + "label": "savedObjects", + "description": [], + "signature": [ + "{ indices: { alias: string; docsCount: number; docsDeleted: number; storeSizeBytes: number; primaryStoreSizeBytes: number; savedObjectsDocsCount: number; }[]; legacyUrlAliases: { activeCount: number; inactiveCount: number; disabledCount: number; totalCount: number; }; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_data.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageCounter", + "type": "Interface", + "tags": [], + "label": "CoreUsageCounter", + "description": [], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "children": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageData", + "type": "Interface", + "tags": [], + "label": "CoreUsageData", + "description": [ + "\nType describing Core's usage data payload" + ], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreUsageData", + "text": "CoreUsageData" + }, + " extends ", + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreUsageStats", + "text": "CoreUsageStats" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageData.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreConfigUsageData", + "text": "CoreConfigUsageData" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageData.services", + "type": "Object", + "tags": [], + "label": "services", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreServicesUsageData", + "text": "CoreServicesUsageData" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageData.environment", + "type": "Object", + "tags": [], + "label": "environment", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreEnvironmentUsageData", + "text": "CoreEnvironmentUsageData" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageDataSetup", + "type": "Interface", + "tags": [ + "note" + ], + "label": "CoreUsageDataSetup", + "description": [ + "\nInternal API for registering the Usage Tracker used for Core's usage data payload.\n" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageDataSetup.registerUsageCounter", + "type": "Function", + "tags": [], + "label": "registerUsageCounter", + "description": [ + "\nAPI for a usage tracker plugin to inject the {@link CoreUsageCounter} to use\nwhen tracking events." + ], + "signature": [ + "(usageCounter: ", + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreUsageCounter", + "text": "CoreUsageCounter" + }, + ") => void" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageDataSetup.registerUsageCounter.$1", + "type": "Object", + "tags": [], + "label": "usageCounter", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreUsageCounter", + "text": "CoreUsageCounter" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageDataStart", + "type": "Interface", + "tags": [ + "note" + ], + "label": "CoreUsageDataStart", + "description": [ + "\nInternal API for getting Core's usage data payload.\n" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageDataStart.getConfigsUsageData", + "type": "Function", + "tags": [], + "label": "getConfigsUsageData", + "description": [], + "signature": [ + "() => Promise<", + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.ConfigUsageData", + "text": "ConfigUsageData" + }, + ">" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats", + "type": "Interface", + "tags": [], + "label": "CoreUsageStats", + "description": [], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkCreate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkGet.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkResolve.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsBulkUpdate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsCreate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsDelete.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsFind.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsGet.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolve.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsUpdate.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.createNewCopiesEnabled.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.createNewCopiesEnabled.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.createNewCopiesEnabled.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.createNewCopiesEnabled.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.overwriteEnabled.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.overwriteEnabled.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsImport.overwriteEnabled.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsImport.overwriteEnabled.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.allTypesSelected.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.allTypesSelected.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.savedObjectsExport.allTypesSelected.no", + "type": "number", + "tags": [], + "label": "'apiCalls.savedObjectsExport.allTypesSelected.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardExport.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.default.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.default.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.total", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.yes", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.yes'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.no", + "type": "number", + "tags": [], + "label": "'apiCalls.legacyDashboardImport.namespace.custom.kibanaRequest.no'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.exactMatch", + "type": "number", + "tags": [], + "label": "'savedObjectsRepository.resolvedOutcome.exactMatch'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.aliasMatch", + "type": "number", + "tags": [], + "label": "'savedObjectsRepository.resolvedOutcome.aliasMatch'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.conflict", + "type": "number", + "tags": [], + "label": "'savedObjectsRepository.resolvedOutcome.conflict'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.notFound", + "type": "number", + "tags": [], + "label": "'savedObjectsRepository.resolvedOutcome.notFound'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreUsageStats.savedObjectsRepository.resolvedOutcome.total", + "type": "number", + "tags": [], + "label": "'savedObjectsRepository.resolvedOutcome.total'", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/core_usage_stats.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.ConfigUsageData", + "type": "Type", + "tags": [], + "label": "ConfigUsageData", + "description": [ + "\nType describing Core's usage data payload" + ], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/start_contract.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementUsageCounter", + "type": "Type", + "tags": [], + "label": "CoreIncrementUsageCounter", + "description": [], + "signature": [ + "(params: ", + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreIncrementCounterParams", + "text": "CoreIncrementCounterParams" + }, + ") => void" + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-usage-data-server", + "id": "def-server.CoreIncrementUsageCounter.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-usage-data-server", + "scope": "server", + "docId": "kibKbnCoreUsageDataServerPluginApi", + "section": "def-server.CoreIncrementCounterParams", + "text": "CoreIncrementCounterParams" + } + ], + "path": "packages/core/usage-data/core-usage-data-server/src/setup_contract.ts", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx new file mode 100644 index 000000000000..7bb0ebcd36eb --- /dev/null +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnCoreUsageDataServerPluginApi +slug: /kibana-dev-docs/api/kbn-core-usage-data-server +title: "@kbn/core-usage-data-server" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/core-usage-data-server plugin +date: 2022-08-27 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] +--- +import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; + + + +Contact Kibana Core for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 146 | 0 | 135 | 0 | + +## Server + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 6fdcdb89afe7..04c861289057 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 3870d746da1d..35524e6c66c1 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 1fbdb4209cb6..58b3448550c7 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 05a150f541c2..672231c10d71 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index efee8f7aebd9..543467895987 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index f11b0a160cfe..5dc88b2ef25e 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 7eb48c1afb22..dac919bf1819 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 6368ac692263..2009c12bfeb8 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 07e6ee6e285e..92dfb5cd7f99 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 2c6a0d026ed9..cf67a38d0585 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 75725e906b70..1abcd777dd1b 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 49d5de785f8e..5bc1043c415b 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index b5e15619d10d..f6b92581d2f0 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index d6d7c6c7de24..da626f22fa50 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index bddff4d438a1..44c1b4780c3d 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 74c1f3f4e219..19b6d915cc77 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 445ac5f0d6ea..4fd277d5cde7 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_get_repo_files.mdx b/api_docs/kbn_get_repo_files.mdx index 059d83739c0f..02a1c3c19bd4 100644 --- a/api_docs/kbn_get_repo_files.mdx +++ b/api_docs/kbn_get_repo_files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-get-repo-files title: "@kbn/get-repo-files" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/get-repo-files plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 9d18ba0d137e..5104219a359b 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 30fda71cf58d..2cdce0fa256c 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 6b03ca9665cf..efdae582ebea 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index e35558b98262..57c81bbf0bde 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 637b697b8ac8..c39fb70c3fe7 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 65f7c975af65..e82071ca1917 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index c4ebf39eee91..f5a9aeb71d35 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 5a3cca57b2fb..62c514990c90 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 9216157b132a..15a344f88720 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_parser.mdx b/api_docs/kbn_kibana_manifest_parser.mdx index 5904cde4a77b..689a7fb15693 100644 --- a/api_docs/kbn_kibana_manifest_parser.mdx +++ b/api_docs/kbn_kibana_manifest_parser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-parser title: "@kbn/kibana-manifest-parser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-parser plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-parser'] --- import kbnKibanaManifestParserObj from './kbn_kibana_manifest_parser.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 6ce28e15f087..1ba887959316 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 1440037e51c2..c1318ab14686 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index b99d7f88ad8c..974dbff34b7b 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index a58a919e6fac..23958518a5a2 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index fdb46bad7b33..b1a513ee14b2 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index ed5aa7a76d1b..6ab559315a80 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 6d2341759dc7..af3978dfd903 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 145308eb4bde..4b1dde059976 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 2efff66b003f..0069f08d0086 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 91940ce23764..0d063994fc8a 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 894b19e4a99e..cf748eb78880 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 90fadf3324a5..92024bad1e87 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 997b69d91c7a..a369325d6623 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 24a5cae829a0..da3aa58fc653 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 7c3ca220ed7d..720d879f496d 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index ede30355959e..7c97242d4f4b 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 15e01d2f94b1..8d26fad7c7aa 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 5b112ad06ee4..91ef703bd3ab 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index f2b9ca25decd..784e5d467c9f 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index c0568d16829b..eb4ea0a42878 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 3659735300ee..02e21c2ec67c 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index f3c8a7d31428..70d5fd2e2694 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 97d4045e1136..446ab3cc0f6c 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index a0b22250b033..096737bef22f 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index a658e918fc4c..0a3118d1f0cc 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index ddd7e5b5f5a0..4485cca30e81 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index afb4d4175116..21b92ea20b31 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index ec7bc813f7f1..9c6d8c4f3a7f 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index d9c0d30a1854..cde70acf3f24 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index ad46d463e271..4ae57f74379e 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index c2ffa9419bd0..e155acad9941 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 32b4802cf9ae..5d9d0b5ed9da 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 3be4e97693af..f3dc448ccbd3 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 442f778af704..09467a677c2f 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 680789fba38f..a4ce5169433e 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index df516da6266b..c006d63dc174 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index d424cd5f18cc..ce8cc66cc10e 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index c764e58c411a..470141a46244 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index f5cf1445b9e1..ee9d614bc3d5 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index ef8ef073ea8b..c82adb6ed783 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index a3a127dc91b4..d4cf950126ad 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 17aff2098b06..3e6bf0c3dcef 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 604765484a78..afcf03642ece 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index d3bd6568178d..f66eacbd6d95 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index ea816187d4b6..e1b4e507f023 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index c2a4a620c05e..9c7ce9228633 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 275a5132bb30..b49f5e4493cb 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 52956ab771e3..634c88b0f764 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index bb391ffcd1e0..b4c563c9369a 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 53446f4877a3..711f43adb349 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index cc69e07a0c79..29bb9ede503d 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index aafc933ecba0..4c0acafbd741 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 90126c247ebb..3c069363a73b 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index b99f92a8bce5..57734dde2552 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 7ef6359cee36..8c791d556b9f 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 3bf0905227be..8b54794fbcee 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-package-json plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] --- import kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index aa6f2fee5e43..a3a3ec5dc0b3 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 8d34a9c3da8f..67d03da99782 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index cc283e52c37b..3a289c022881 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index a304f8cde35b..0c89cd4ce110 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index b75c680d199d..ed8952fe52ac 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 1eb6f4ee924c..a4f58858912c 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 7935863bde91..537560a106bb 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index 80d8867c0e08..a6356efa782a 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] --- import kbnTypeSummarizerObj from './kbn_type_summarizer.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index 5725bd60ccc2..e25c06148020 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer-core plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] --- import kbnTypeSummarizerCoreObj from './kbn_type_summarizer_core.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index acc3841da6ca..3d265d24dbc8 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 4142f0beac9e..a118d3249cde 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 26ef04ca995c..6aa6c6fe1085 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 2e4610d5feef..83c1f4551b0b 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 04850b9d8a9e..2ec9a8e4940c 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 2c77bc33f6c3..e82c0ed6f401 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 0e6b920ea9d2..031197f38d50 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 60ea7190ed08..e90d51be042f 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 8cd1a4faf9b2..c43264d26f9f 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index c48cc9b847b9..fd39d7db11c8 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index d60dcb649ad1..6e902b3fc0f3 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index c12e40158a53..813480fa85a4 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 154777863ae8..b8eedff70f7d 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index b7cd8c333329..1ee6bebf32a2 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index a38ecf961b5d..638edf587d0b 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 91ce79dc98f9..bdc1d3afe33d 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index b15c941773c8..345c8dd1698d 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index f6c83e308a10..bc0255433ff2 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 3290f619b425..a3a5d6b136b5 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index abcac9c4aa56..d2ec0e971d54 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 23fbb345e2e2..6b2d655a7bfe 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index e9aabd408f75..d7d1e60b3cd0 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 65954294d646..4979b77709e4 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index d0f9acae345c..1b75161a322a 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index d177c3008e13..43919b8ed0c7 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 91c62fe761b2..a51a986f568a 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 78b1a74aff53..1cc2948e66b2 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,19 +15,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 414 | 343 | 36 | +| 425 | 353 | 36 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 29528 | 180 | 19905 | 923 | +| 30007 | 180 | 20115 | 926 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 266 | 0 | 261 | 19 | +| | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 272 | 0 | 267 | 19 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 19 | 1 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 9 | 0 | 0 | 1 | | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 368 | 0 | 359 | 21 | @@ -41,7 +41,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 18 | 0 | 2 | 3 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 13 | 0 | 13 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 204 | 0 | 196 | 7 | -| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2524 | 1 | 216 | 5 | +| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2674 | 1 | 136 | 5 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 102 | 0 | 83 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 146 | 0 | 141 | 12 | @@ -218,6 +218,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Kibana Core | - | 6 | 0 | 6 | 0 | | | Kibana Core | - | 4 | 0 | 4 | 0 | | | Kibana Core | - | 17 | 0 | 9 | 0 | +| | Kibana Core | - | 12 | 0 | 11 | 0 | | | Kibana Core | - | 4 | 0 | 4 | 0 | | | Kibana Core | - | 4 | 0 | 4 | 0 | | | Kibana Core | - | 5 | 0 | 2 | 0 | @@ -276,15 +277,23 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Kibana Core | - | 5 | 0 | 0 | 0 | | | Kibana Core | - | 6 | 0 | 6 | 0 | | | Kibana Core | - | 94 | 1 | 66 | 0 | -| | Kibana Core | - | 288 | 1 | 125 | 0 | -| | [Owner missing] | - | 35 | 0 | 29 | 1 | -| | [Owner missing] | - | 4 | 0 | 4 | 0 | +| | Kibana Core | - | 289 | 1 | 126 | 0 | +| | Kibana Core | - | 68 | 0 | 49 | 0 | +| | Kibana Core | - | 6 | 0 | 6 | 0 | +| | Kibana Core | - | 37 | 0 | 31 | 1 | +| | Kibana Core | - | 4 | 0 | 4 | 0 | | | Kibana Core | - | 2 | 0 | 1 | 0 | | | Kibana Core | - | 6 | 0 | 6 | 0 | | | Kibana Core | - | 7 | 0 | 7 | 0 | | | Kibana Core | - | 82 | 0 | 41 | 0 | +| | Kibana Core | - | 25 | 0 | 23 | 0 | +| | Kibana Core | - | 4 | 0 | 4 | 0 | +| | Kibana Core | - | 24 | 0 | 19 | 0 | +| | Kibana Core | - | 12 | 0 | 12 | 0 | | | Kibana Core | - | 225 | 0 | 82 | 0 | -| | [Owner missing] | - | 99 | 1 | 86 | 0 | +| | Kibana Core | - | 9 | 0 | 9 | 3 | +| | Kibana Core | - | 14 | 0 | 13 | 0 | +| | Kibana Core | - | 99 | 1 | 86 | 0 | | | Kibana Core | - | 11 | 0 | 9 | 0 | | | Kibana Core | - | 5 | 0 | 5 | 0 | | | Kibana Core | - | 6 | 0 | 4 | 0 | @@ -294,6 +303,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | Kibana Core | - | 25 | 1 | 25 | 0 | | | Kibana Core | - | 4 | 0 | 4 | 0 | | | Kibana Core | - | 23 | 0 | 3 | 0 | +| | Kibana Core | - | 146 | 0 | 135 | 0 | | | [Owner missing] | - | 13 | 0 | 7 | 0 | | | [Owner missing] | - | 10 | 0 | 10 | 0 | | | [Owner missing] | elasticsearch datemath parser, used in kibana | 44 | 0 | 43 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 1d5ccd695246..63efe8463bfe 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 1251f477dfe6..6e780a74d62a 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 8386f38b55b7..dd5e41a51e88 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d462ed4ad2f2..b053b498cbef 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 2555504390b7..0b717b776933 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index cbbab3ef67bc..fc1ca6f04f55 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 48ed84d34bf7..b89b7fe12f79 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 7304a111f9ec..3180d38fe99a 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index eb133da2af98..cf8c5756db4d 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 0ebcacfa6795..8a3e8c74035e 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index a5f3017978da..8b62fed7b59c 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 635ffd617cd7..fbb91af22369 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 66b1cb7e8360..0e8fdf3117ec 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.devdocs.json b/api_docs/security.devdocs.json index 5c69cfece3f8..5362de7240ce 100644 --- a/api_docs/security.devdocs.json +++ b/api_docs/security.devdocs.json @@ -3124,13 +3124,7 @@ "label": "context", "description": [], "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.GetDeprecationsContext", - "text": "GetDeprecationsContext" - } + "GetDeprecationsContext" ], "path": "x-pack/plugins/security/common/model/deprecations.ts", "deprecated": false diff --git a/api_docs/security.mdx b/api_docs/security.mdx index be910312f73c..4e7b0a22e4bf 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 5a3a50027845..781d90b75c9c 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 6cd7ccfa26c4..453c6c176af6 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 68a8d14b3913..1aa2cb52b609 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index b17807dd2861..816662cf3812 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 3d8727ffef84..eeda8f0e47a1 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 9810ea11c105..8f881a95534b 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1d18374d7443..b2ac15022422 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index a7df4dc50df1..aeddb008cc23 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 59bde8939866..55b85b447dfc 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 2b0db15b1b0f..a5a4107c3369 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index bcc0fc1c2e13..91d10f0434c8 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 2680aa2a92e2..40e6f206456e 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index b7e477ddbff4..346df9c1d3ea 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 1955a1aeb40e..7dcca7c7e3fb 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 49e8350b8a7d..90fa14c42f6e 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index abec400ea3e9..e98772231b04 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 5babd1ef9b8c..ae2220e17d58 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 6dae65ba1b9b..831da972f992 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index ab1663a92bb7..780a9995e5e4 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index e1aa55f00e67..acb4102e4085 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index be6d5bf88b51..96604bf8b72b 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index cc79236e9501..901f0eaaa864 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 121eb4f1bd9c..279506803a72 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index a1f83968f2db..920bba7e1c83 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 6c7c46e4aaac..09154b69c641 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 752dddd2bd01..bb34e3a665f2 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 6df3539b3335..03b23683c5af 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index b6de14724a90..395dda31cf3d 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index a0d7fc8f29bf..42d97e757c63 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 894e312ee0ac..d31e1755cfa4 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index fa0386973a68..ed2535a40ede 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 96766a96ff7b..072d8e26a159 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 170e2b7595ed..45587d703b4f 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 51ea10861850..26be85221f7d 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2022-08-26 +date: 2022-08-27 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From a029e68e56c6cba4d23db2f5ea324e7dc987b4cc Mon Sep 17 00:00:00 2001 From: Lee Drengenberg Date: Sat, 27 Aug 2022 03:24:39 -0500 Subject: [PATCH 47/50] [Archive Migration] batch 5 of removing empty_kibana (#139410) * remove use of empty_kibana es_archive * remove empty_kibana archives again * replace es_archiver/empty_kibana with cleanStandardList * remove more empty_kibana uses * add cleanup of a package * remove comment * move fleet_setup before epm, something not cleaning packages * revert fleet_api_integration changes and restore empty_kibana --- .../contributing/development-functional-tests.asciidoc | 9 +++++---- test/functional/apps/dashboard_elements/index.ts | 5 +++-- test/functional/apps/management/_handle_alias.ts | 4 +++- x-pack/plugins/security_solution/cypress/README.md | 2 +- .../alerting_api_integration/spaces_only/tests/index.ts | 7 +++++-- .../spaces_only_legacy/tests/index.ts | 7 +++++-- .../apis/cloud_security_posture/update_rules_config.ts | 5 +++-- 7 files changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/developer/contributing/development-functional-tests.asciidoc b/docs/developer/contributing/development-functional-tests.asciidoc index b544add73b3b..2d47ad92582b 100644 --- a/docs/developer/contributing/development-functional-tests.asciidoc +++ b/docs/developer/contributing/development-functional-tests.asciidoc @@ -219,6 +219,7 @@ export default function ({ getService, getPageObject }) { const retry = getService('retry'); const testSubjects = getService('testSubjects'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); // for historical reasons, PageObjects are loaded in a single API call // and returned on an object with a key/value for each requested PageObject @@ -231,8 +232,8 @@ export default function ({ getService, getPageObject }) { // app/page and restores some archives into {es} with esArchiver before(async () => { await Promise.all([ - // start with an empty .kibana index - esArchiver.load('test/functional/fixtures/es_archiver/empty_kibana'), + // start by clearing Saved Objects from the .kibana index + await kibanaServer.savedObjects.cleanStandardList(); // load some basic log data only if the index doesn't exist esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/makelogs') ]); @@ -243,10 +244,10 @@ export default function ({ getService, getPageObject }) { // right after the before() hook definition, add the teardown steps // that will tidy up {es} for other test suites after(async () => { - // we unload the empty_kibana archive but not the makelogs + // we clear Kibana Saved Objects but not the makelogs // archive because we don't make any changes to it, and subsequent // suites could use it if they call `.loadIfNeeded()`. - await esArchiver.unload('test/functional/fixtures/es_archiver/empty_kibana'); + await kibanaServer.savedObjects.cleanStandardList(); }); // This series of tests illustrate how tests generally verify diff --git a/test/functional/apps/dashboard_elements/index.ts b/test/functional/apps/dashboard_elements/index.ts index 10b0c6e5ecff..6866fcd0b718 100644 --- a/test/functional/apps/dashboard_elements/index.ts +++ b/test/functional/apps/dashboard_elements/index.ts @@ -12,19 +12,20 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); const log = getService('log'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('dashboard elements', () => { before(async () => { log.debug('Starting before method'); await browser.setWindowSize(1280, 800); - await esArchiver.load('test/functional/fixtures/es_archiver/empty_kibana'); + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/long_window_logstash'); }); after(async () => { - await esArchiver.unload('test/functional/fixtures/es_archiver/empty_kibana'); + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); await esArchiver.unload('test/functional/fixtures/es_archiver/long_window_logstash'); }); diff --git a/test/functional/apps/management/_handle_alias.ts b/test/functional/apps/management/_handle_alias.ts index 82544a7be55f..6f33d36e1dfc 100644 --- a/test/functional/apps/management/_handle_alias.ts +++ b/test/functional/apps/management/_handle_alias.ts @@ -15,12 +15,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const security = getService('security'); const PageObjects = getPageObjects(['common', 'home', 'settings', 'discover', 'timePicker']); + const kibanaServer = getService('kibanaServer'); describe('Index patterns on aliases', function () { before(async function () { + await kibanaServer.savedObjects.cleanStandardList(); await security.testUser.setRoles(['kibana_admin', 'test_alias_reader']); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/alias'); - await esArchiver.load('test/functional/fixtures/es_archiver/empty_kibana'); await es.indices.updateAliases({ body: { actions: [ @@ -76,6 +77,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await PageObjects.common.unsetTime(); await security.testUser.restoreDefaults(); + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.unload('test/functional/fixtures/es_archiver/alias'); }); }); diff --git a/x-pack/plugins/security_solution/cypress/README.md b/x-pack/plugins/security_solution/cypress/README.md index b97e48c14cb0..44f1fa63d732 100644 --- a/x-pack/plugins/security_solution/cypress/README.md +++ b/x-pack/plugins/security_solution/cypress/README.md @@ -343,7 +343,7 @@ The data the tests need: - Is generated on the fly using our application APIs (preferred way) - Is ingested on the ELS instance using the `es_archiver` utility -By default, when running the tests in Jenkins mode, a base set of data is ingested on the ELS instance: an empty kibana index and a set of auditbeat data (the `empty_kibana` and `auditbeat` archives, respectively). This is usually enough to cover most of the scenarios that we are testing. +By default, when running the tests in Jenkins mode, a base set of data is ingested on the ELS instance: a set of auditbeat data (the `auditbeat` archive). This is usually enough to cover most of the scenarios that we are testing. ### How to generate a new archive diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts index 424deaaf8381..890e6790f84c 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/index.ts @@ -28,6 +28,9 @@ export async function buildUp(getService: FtrProviderContext['getService']) { } export async function tearDown(getService: FtrProviderContext['getService']) { - const esArchiver = getService('esArchiver'); - await esArchiver.unload('x-pack/test/functional/es_archives/empty_kibana'); + const kibanaServer = getService('kibanaServer'); + await kibanaServer.savedObjects.cleanStandardList(); + + const spacesService = getService('spaces'); + for (const space of Object.values(Spaces)) await spacesService.delete(space.id); } diff --git a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts index 757f2793b239..dda1376a432a 100644 --- a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts +++ b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/index.ts @@ -26,6 +26,9 @@ export async function buildUp(getService: FtrProviderContext['getService']) { } export async function tearDown(getService: FtrProviderContext['getService']) { - const esArchiver = getService('esArchiver'); - await esArchiver.unload('x-pack/test/functional/es_archives/empty_kibana'); + const kibanaServer = getService('kibanaServer'); + await kibanaServer.savedObjects.cleanStandardList(); + + const spacesService = getService('spaces'); + for (const space of Object.values(Spaces)) await spacesService.delete(space.id); } diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts b/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts index b5d92e2daec3..204d4d347879 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/update_rules_config.ts @@ -12,12 +12,13 @@ export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); const chance = new Chance(); + const kibanaServer = getService('kibanaServer'); describe('POST /internal/cloud_security_posture/update_rules_config', () => { let agentPolicyId: string; before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/empty_kibana'); + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server'); const { body: agentPolicyResponse } = await supertest @@ -31,7 +32,7 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/empty_kibana'); + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server'); }); From 12129a43c1bb71220fc563c35d00b444b74f12aa Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 28 Aug 2022 00:40:03 -0400 Subject: [PATCH 48/50] [api-docs] Daily api_docs build (#139602) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.mdx | 2 +- api_docs/core_application.mdx | 2 +- api_docs/core_chrome.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_mount_utils_browser_internal.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_get_repo_files.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_manifest_parser.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_type_summarizer_core.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 362 files changed, 362 insertions(+), 362 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 72099fd253d7..f16388b01ae4 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index f7fc368181e3..28d72e67d1af 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 24442adb5f84..67f8a4f5df64 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index af7df89aa778..dfe17f377268 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 4c5b2b5b07da..c626335df3c4 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 169ecaab747c..bb3151451796 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index db1ce69fa779..c26365b411de 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 3d7a093f9a46..4066e4ed7301 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index f699a1be48ea..8cbede1ede26 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index dc086d340d10..7ca293a61716 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index faf5e439c198..ff6d2668083b 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 601c7b3cbddf..a038675034ec 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 88eddcfb0326..403ffddf152a 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 688c3243c470..a1c4605753bf 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/core.mdx b/api_docs/core.mdx index ee92dc788de6..79faf074e3da 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github description: API docs for the core plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 5c244e6c1c74..ca51069b162f 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github description: API docs for the core.application plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] --- import coreApplicationObj from './core_application.devdocs.json'; diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 5fd5f48ffea4..4defbcc760df 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github description: API docs for the core.chrome plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] --- import coreChromeObj from './core_chrome.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index f204e18fc6d1..45262f518c0e 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index e4c7ea24b6b9..ee0c06cfc091 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 91ecdc910704..a5e08daa6575 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index a89526596b14..0a08e1b23dc9 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 9392405d158a..0f566e3916ff 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 324fed3eee3d..b5e3de6c91d3 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 18c1d29beda1..21e58ab02e96 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 6aa60c835a19..497c1d8891c9 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index d91fee2e2fe4..6ec963d0a9eb 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 18827f5bfecf..5758fdb60e1f 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 6299cdf51af6..abbe38a465e4 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 4d6d558ed3fb..4f82d956eac2 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 6c9431ff6e0d..73d4136e6bbf 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index e129cc138bb5..c3c6bf92ebe8 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 12f53da387c3..e868b26771ed 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 47b69ea35f87..137fca95f071 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 8cd682821bef..529488c02933 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index ac5e87634da4..40595c0e8b5d 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index c280cbfff40a..5e381268b66c 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index d7607b317b8b..0267de7bd909 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 061d4f848e22..9b7a8da46384 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index f21f1235949a..8cb25d4d606e 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index bfe5be56a415..f8c45b52413a 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 7956000ab3b6..78161330e730 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 8c0da2b23b13..2710b537c172 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 29580dced00a..cf7a95af54af 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 5f118b81f43d..9d7014312438 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 4d132b690dbb..103374b6c06f 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 63767f2f6d4d..7250887117ce 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 7d65e2408600..3fda6c30e605 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 91a888e82c01..77f8221a7c90 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 70e3366975e7..239965c08bcf 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index d0aef64b4b00..f312fa5e8425 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 64e82508c91e..435cf200e305 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 77bc5018511a..41de1b04237a 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index d919b7ffa43f..21bae9a711ca 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 8b74ebfd96b6..2fbe186ef2b6 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 78661bce3dce..ea4dc080a9b4 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 5340fe80cb11..1f52a0ac42d4 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 8c1ab5f24f91..cca62931a24a 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index ece71d7d98e2..15e5e255d302 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 7d220cbe91d7..483ea01af5ab 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 6fc1753118f3..a128a744a6e1 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 2cd7d0a899c1..ace4af124643 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 30f09e0fd92d..4d0be06f42fd 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 7c512fdb5fbb..28666e0303e8 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index c9a615d7c79e..7ddcb2af1e81 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 4b93118bf932..bc0254c46691 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 72b72338d5ca..32e08f28c17f 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 3ee44096a86f..8945fb2f27cb 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index f04651599676..a46633926ba7 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 4a398d2940b0..1db388d7546d 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 95915639fc98..7bacd976f29a 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 913d9304ad4b..f014ae790965 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 0d4829616c14..f82f323a84ed 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index a04f9caca9e8..cdee2421f60d 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 3029b55d2b72..a4f29600246f 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 59335d667bf8..1d3b40fefcd5 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index b3a69fb667fc..4bab09321b81 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 181265895977..58a4a2053ba0 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index b9f4e5be2542..634314455197 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index bc7f8849d136..bbb37aa050ee 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 74309dee8289..a797fbd3f08c 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 2f1fd7612a57..d9f0a3315dff 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 30424d8f11e9..0f723e2bc7d7 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 84a0a15f0d11..258a5463871c 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 0919a4905283..7d9ed9be1bd9 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 09a4e71b205f..904141b4df5b 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 19b81b76bb85..fffcdc7f967b 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index c2461d9c3c3a..0fe398917490 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 36dc3ee5049f..0f61ee3df70f 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 8127d8533077..836afefa7a92 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index f8c1a9407f51..26d3cab02f62 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 4969d4652bcb..3b99f31c9570 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index ba08e833a873..1c3e6aa511e3 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index b3e83b88ac43..ba7e3b3d1215 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index c46823aae5c3..148bc76020c6 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 14872a2fbdb8..79919f312cb2 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e82724d89723..06517e05e608 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 407f3fb8dbce..80e64bb61fd5 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 251a8c81bd69..f25b4c133f14 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index d034aff68c2b..458a5d5d3acb 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 677079c72bd2..d71adac2e400 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index dbb5647895aa..e05a8ff70fe5 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index baf18e163c74..42ebd77c4a58 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 5912e43f2fad..6b1469a0cda8 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index f7fb41675590..c235e87528dc 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index be3d0d5ecf5a..d65aa8ec8a40 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 0f57c7d2f33a..e44f400f03f3 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index f216190b56a3..e3b241a9a2d7 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 0d1790635f6f..7a5f585128b6 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 4cfc46a6783d..7f2bec2bab54 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 121e45a296a2..146670db9d8b 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index a86500a5806b..92a1ae71f578 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index e752420a17b2..32e9c1b04a25 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index d23c31c8e45f..b877b90ccdb8 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 88553f1090f2..4c436142aab1 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 70e71b507bc9..445cc6da99f4 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 2d4248876b9f..619905d0a950 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index c6193be15ff0..d58e6371598c 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index e38eae085d90..3421432cf783 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index ad0d75f396b2..d9f06f1cdfea 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index ee7655b92ed5..e0914247ae34 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 6a9a091cbaac..f9d27b22ebc3 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 3005b722378f..c0957c451eb1 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index f7a8b9764070..73d05600568a 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index ece6f0964a69..835717bda004 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 76f2e074390a..15742ff065a5 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index f046322d57d8..964199b21671 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 60c7539c883a..727413e5bfcd 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 3c08ef3793aa..31ef0a3806e1 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index dd8455aafff0..4ea037f7b55e 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index c2ed09a1778d..7d9cf4e66733 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 879840bf3f01..b0b2f86bb838 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 22ff0940495f..2b35be15644e 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index d1fe03411c99..aed70295a28c 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 31f7544da1f0..9295f164dcdb 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 899465e3a126..9833f36cb40e 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index d69de9da4521..ea0997b26286 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 56debadb17b7..718ad998f6e4 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 32b501a852c0..96dd2e3ee301 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index aac7ef1f3372..7c65297945b4 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 9f5714094bd6..a50d8fb8ca8d 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 7ffe1548bbea..468c1fa71603 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 959a5ab37e43..2c55b31f241b 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] --- import kbnCoreInjectedMetadataBrowserObj from './kbn_core_injected_metadata_browser.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 18b839379336..ee0cff22c741 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 12cc92fd97e9..3dc00cb5c5db 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 007261357c0d..9cb07d914fe0 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 15f1568cf72e..f4687d1fec8a 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 2dc96e88e1bb..ae6493c07330 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 091313bb82d9..bd0d1a348046 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 4eaad22e149d..fa926802350b 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 845d0ea59465..9784693f4d47 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 61e6d9a7438f..a5fcd4d870a0 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 07495dfbbceb..ce67b0dfaf26 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index bfcd76241b2d..b6f58bf2ced4 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 21022c33735b..e82e1f4498f1 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser_internal.mdx b/api_docs/kbn_core_mount_utils_browser_internal.mdx index 04f7ef1573ea..e8462d8f0014 100644 --- a/api_docs/kbn_core_mount_utils_browser_internal.mdx +++ b/api_docs/kbn_core_mount_utils_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser-internal title: "@kbn/core-mount-utils-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser-internal'] --- import kbnCoreMountUtilsBrowserInternalObj from './kbn_core_mount_utils_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 80f658440dd5..414ce344c716 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index e1991947628c..8d81051d6960 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 1b3a72143c2d..0bb2ca50772a 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 07154ccd1734..4f65d9175a46 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index a8e3a841c006..a59ce643728b 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index d14022bfcee5..c20eb24696e5 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 8615231129c7..b3511ec556dd 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 3ac1bbb69747..294cf26e1b86 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 5ccfa886462c..55b560524b76 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 91a0739307d4..6d106759078b 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 9aadcdac683a..4e353b49e5bb 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 155bf417d58a..765cb26d09e3 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index afa120ef791e..2c0aa94780e7 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_internal.mdx b/api_docs/kbn_core_saved_objects_api_server_internal.mdx index 682ecaecc2a6..54829b9a056b 100644 --- a/api_docs/kbn_core_saved_objects_api_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-internal title: "@kbn/core-saved-objects-api-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-internal'] --- import kbnCoreSavedObjectsApiServerInternalObj from './kbn_core_saved_objects_api_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 3825fbc5c9e1..63a0c2655c38 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 88d6a5798ac1..5e4f781e7b51 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 0c5b34f659e6..7bed592b87a4 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 94b810da5a95..5dab80c8c69b 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 518486fae1d6..16e6589c44a9 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index b17f92f925c6..afb8bc5a7cbe 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 2d98e39eafbc..6319d806951f 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 32ab892600ad..1c8c50859735 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index f103ccd43ff0..e8f8066e176e 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 71fe70097ed9..f2bd4c2e8b05 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 59b1381365e1..c55be72ce58a 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 367db5b0be3e..066bbed46a9d 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 8658b323897e..9c6b877ab9fb 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index cbf40027ce54..cfc3b8f8338f 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 33941dee2e3c..c05daeab136c 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 96346ef30cdf..c584a9d2055f 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 355643341388..fde013078848 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 7b48ab0953a3..58880aa26002 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 160d3d4fb89f..4e4bc60d5402 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 4b24e2b55634..8afef7df1f68 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 57cef0e86086..7659aae174a8 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 77c012ae999d..8c3ef5acaf64 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index e1b5be06c5bc..1d436b412d00 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index a8d10159e22f..cf22fa8aa077 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 7bb0ebcd36eb..5ebccd59804a 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 04c861289057..6192cdbd44d9 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 35524e6c66c1..9e8221aff2c0 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 58b3448550c7..10be0b1b374b 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 672231c10d71..a98cffae2f94 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 543467895987..4994aaefb664 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 5dc88b2ef25e..36f224e56451 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index dac919bf1819..ed5f66acc054 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 2009c12bfeb8..3951aec52936 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 92dfb5cd7f99..36bce1ef5d29 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index cf67a38d0585..accec4aa51fb 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 1abcd777dd1b..7ca5a9f9164e 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 5bc1043c415b..6a9c594fe868 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index f6b92581d2f0..88bc6c3b36c5 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index da626f22fa50..f208967eefe4 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 44c1b4780c3d..5a5aa3e72e13 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 19b6d915cc77..06166239e5c6 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 4fd277d5cde7..4a00b8cddd1b 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_get_repo_files.mdx b/api_docs/kbn_get_repo_files.mdx index 02a1c3c19bd4..4c7a58232210 100644 --- a/api_docs/kbn_get_repo_files.mdx +++ b/api_docs/kbn_get_repo_files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-get-repo-files title: "@kbn/get-repo-files" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/get-repo-files plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 5104219a359b..0a72e46fcdb8 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 2cdce0fa256c..a808d333c13e 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index efdae582ebea..edccba9e3ec5 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 57c81bbf0bde..aa3bc377567c 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index c39fb70c3fe7..b3c64dd391f2 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index e82071ca1917..90ff52dda5e1 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index f5a9aeb71d35..4bf4e31ab039 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 62c514990c90..4c556bfd9c67 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 15a344f88720..b32cc18990bb 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_parser.mdx b/api_docs/kbn_kibana_manifest_parser.mdx index 689a7fb15693..1dce03a2d7b3 100644 --- a/api_docs/kbn_kibana_manifest_parser.mdx +++ b/api_docs/kbn_kibana_manifest_parser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-parser title: "@kbn/kibana-manifest-parser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-parser plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-parser'] --- import kbnKibanaManifestParserObj from './kbn_kibana_manifest_parser.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 1ba887959316..c8235177844d 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index c1318ab14686..e75c8dba697a 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 974dbff34b7b..6fca2944bbe8 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 23958518a5a2..c4cbe28f5912 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index b1a513ee14b2..9c814810a344 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 6ab559315a80..a9c0155d8ded 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index af3978dfd903..02977946f802 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 4b1dde059976..36b607c6c4e5 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 0069f08d0086..3b9e7d90974b 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 0d063994fc8a..f83831293c88 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index cf748eb78880..8874b0cb4848 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 92024bad1e87..6afad36e477c 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index a369325d6623..f67e97e76745 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index da3aa58fc653..212ecc224344 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 720d879f496d..49991d95446a 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 7c97242d4f4b..4a3065f9927d 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 8d26fad7c7aa..948502668eaf 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 91ef703bd3ab..34a237edf044 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 784e5d467c9f..fdd14855fee2 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index eb4ea0a42878..0402e34d996e 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 02e21c2ec67c..7fff2c2d0b6a 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 70d5fd2e2694..52c6ce0c1ce9 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 446ab3cc0f6c..63409d60558d 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 096737bef22f..318252303ae3 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 0a3118d1f0cc..6c381ede88de 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 4485cca30e81..47b2a2d05dc1 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 21b92ea20b31..ac576ad77723 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 9c6d8c4f3a7f..b72e1ac924cd 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index cde70acf3f24..fd815aa06c64 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 4ae57f74379e..2f875ae5344c 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index e155acad9941..2f213bb4b6cc 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 5d9d0b5ed9da..a89bb87cfb7f 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index f3dc448ccbd3..cb3727c77174 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 09467a677c2f..f9a3dd0bd0b9 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index a4ce5169433e..d813bffe2de9 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index c006d63dc174..29d5088d807c 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index ce8cc66cc10e..65d12bc90f10 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 470141a46244..9453b4758dc2 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index ee9d614bc3d5..8e2a750b83a1 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index c82adb6ed783..a35aa395217b 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index d4cf950126ad..bbaec10d9eb1 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 3e6bf0c3dcef..950133a39b6c 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index afcf03642ece..b0a4124dab21 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index f66eacbd6d95..47654f40a151 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index e1b4e507f023..6a99fd5c4d40 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 9c7ce9228633..631190f27809 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index b49f5e4493cb..e4d0e792cb46 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 634c88b0f764..82f41c508775 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index b4c563c9369a..0dd6569da4fa 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 711f43adb349..e2f2961eb707 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 29bb9ede503d..f9498e115d6a 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 4c0acafbd741..3c18b76c8ec7 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 3c069363a73b..c9dde900333d 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 57734dde2552..677ea3098b52 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 8c791d556b9f..5b90bfa9fa91 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 8b54794fbcee..186d46599c34 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-package-json plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] --- import kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index a3a3ec5dc0b3..04e1955060de 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 67d03da99782..3e7247084e0c 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 3a289c022881..97c02b00b17a 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 0c89cd4ce110..07c0e478d483 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index ed8952fe52ac..e720774bff68 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index a4f58858912c..69ac49832d07 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 537560a106bb..5683072ede84 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index a6356efa782a..914fe0154fc5 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] --- import kbnTypeSummarizerObj from './kbn_type_summarizer.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index e25c06148020..34718d25009a 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer-core plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] --- import kbnTypeSummarizerCoreObj from './kbn_type_summarizer_core.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 3d265d24dbc8..54ce9860350e 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index a118d3249cde..3d143b60a21c 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 6aa6c6fe1085..1e44c9b90239 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 83c1f4551b0b..fc102a1a4062 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 2ec9a8e4940c..f3eaa488698e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index e82c0ed6f401..58a26939d34f 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 031197f38d50..2f2fefb42c81 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index e90d51be042f..ed86b7e42384 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index c43264d26f9f..813f1d91a507 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index fd39d7db11c8..0a19523849fc 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 6e902b3fc0f3..b379130ec78f 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 813480fa85a4..b918965a56a8 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index b8eedff70f7d..b58095b0c107 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 1ee6bebf32a2..9152e662cbef 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 638edf587d0b..925188c3553c 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index bdc1d3afe33d..9de5087ae5de 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 345c8dd1698d..8f2d13396da7 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index bc0255433ff2..bdc95cef8166 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index a3a5d6b136b5..5573221a142a 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index d2ec0e971d54..7e90a7089fad 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 6b2d655a7bfe..122c1bf8c65f 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index d7d1e60b3cd0..03aaa9a5e203 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 4979b77709e4..ee3d1bfe817e 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 1b75161a322a..f332463e571e 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 43919b8ed0c7..dfc68a8890f7 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index a51a986f568a..dd4c1961ee4d 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 1cc2948e66b2..91e69849b8f5 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 63efe8463bfe..1f3d995a024d 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 6e780a74d62a..73e605562652 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index dd5e41a51e88..1e5be9258b7c 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index b053b498cbef..111608b3dedb 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 0b717b776933..43f6dc599e47 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index fc1ca6f04f55..a7a349cc245e 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index b89b7fe12f79..b9756c44e4bf 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 3180d38fe99a..7be26688c0b1 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index cf8c5756db4d..792a8f590c1e 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 8a3e8c74035e..e42305861897 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 8b62fed7b59c..112ad4155d3b 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index fbb91af22369..677c2d9d14de 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 0e8fdf3117ec..0a991c870c1a 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 4e7b0a22e4bf..e0357f83152b 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 781d90b75c9c..31be3ca07049 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 453c6c176af6..647cdc5915ba 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 1aa2cb52b609..c61b3e58f21a 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 816662cf3812..fc4c5bc29c84 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index eeda8f0e47a1..b56fef6619f7 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 8f881a95534b..4898d7e9022b 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index b2ac15022422..338329ed7f15 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index aeddb008cc23..12107f7a23a9 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 55b85b447dfc..ee544b349e7d 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index a5a4107c3369..7b656903bc7d 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 91d10f0434c8..aae1f7cc3a7a 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 40e6f206456e..fc13a37d12e4 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 346df9c1d3ea..e607f124e0b3 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 7dcca7c7e3fb..27c8f2899e55 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 90fa14c42f6e..57b7c6aaf9e1 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index e98772231b04..601ee2ff820a 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index ae2220e17d58..a17d5e204d76 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 831da972f992..8c4436636f21 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 780a9995e5e4..0caf74bb51e1 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index acb4102e4085..7e913c0bb8be 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 96604bf8b72b..86bd568107e5 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 901f0eaaa864..6d913e8d7466 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 279506803a72..24e628eb8bdc 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 920bba7e1c83..90583e638eee 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 09154b69c641..a03c5e47c756 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index bb34e3a665f2..f85c9a3e9604 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 03b23683c5af..290aa5c63bfe 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 395dda31cf3d..7d961620e17c 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 42d97e757c63..2415c3a4c283 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d31e1755cfa4..715ff9d4525b 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index ed2535a40ede..e71f72acf223 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 072d8e26a159..830c85f40c35 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 45587d703b4f..a737dfddab4b 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 26be85221f7d..836107691ee7 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2022-08-27 +date: 2022-08-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 51039fa0090978f65ef9e051b372a56fe5dd4c41 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 29 Aug 2022 00:41:46 -0400 Subject: [PATCH 49/50] [api-docs] Daily api_docs build (#139608) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.mdx | 2 +- api_docs/core_application.mdx | 2 +- api_docs/core_chrome.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_mount_utils_browser_internal.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_get_repo_files.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_manifest_parser.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_type_summarizer_core.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 362 files changed, 362 insertions(+), 362 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index f16388b01ae4..450c35048432 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 28d72e67d1af..30e18bcde7c7 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 67f8a4f5df64..2af36f84333f 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index dfe17f377268..3b09b56ea753 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index c626335df3c4..388d1c335d2f 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index bb3151451796..bd08573bc623 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index c26365b411de..daacdd9e9e93 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 4066e4ed7301..21d6817ec1a5 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 8cbede1ede26..67e24d170956 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 7ca293a61716..7a213df7e6a4 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index ff6d2668083b..2a965ae31799 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index a038675034ec..9a26bd2f2322 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 403ffddf152a..75146f972667 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index a1c4605753bf..6acfa6fa71b4 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 79faf074e3da..730fc6498e00 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github description: API docs for the core plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index ca51069b162f..c2fb7227f119 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github description: API docs for the core.application plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] --- import coreApplicationObj from './core_application.devdocs.json'; diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 4defbcc760df..e1915bcf9b1f 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github description: API docs for the core.chrome plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] --- import coreChromeObj from './core_chrome.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 45262f518c0e..423ab4d70e52 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index ee0c06cfc091..6d03f337098a 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index a5e08daa6575..d8a901904b7a 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 0a08e1b23dc9..604a5172345a 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 0f566e3916ff..12aaa7b1d1fd 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index b5e3de6c91d3..8caa65fd8ea8 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 21e58ab02e96..65e8db799ba0 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 497c1d8891c9..43842270a8f9 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 6ec963d0a9eb..8a1b221a1351 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 5758fdb60e1f..dfedbd5c5bdd 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index abbe38a465e4..da9efc7d8997 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 4f82d956eac2..f857316bca4a 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 73d4136e6bbf..58153e46e464 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index c3c6bf92ebe8..35667ccaaa59 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index e868b26771ed..85cd458c0ffa 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 137fca95f071..7f9e09a88f6e 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 529488c02933..819f7b0fc939 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 40595c0e8b5d..b4b42f9f4b11 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 5e381268b66c..101b468fa941 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 0267de7bd909..3682d28e5c13 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 9b7a8da46384..b97c27b4d548 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 8cb25d4d606e..ede28ea7b9db 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index f8c45b52413a..073f459e559e 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 78161330e730..6f3aa93a1d6d 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 2710b537c172..35244d8a2f5e 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index cf7a95af54af..853ff19a4654 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 9d7014312438..0a29a6902963 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 103374b6c06f..a0edb3439037 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 7250887117ce..20eb13e1312c 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 3fda6c30e605..9ed6c65ba91b 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 77f8221a7c90..3fcc018eaa56 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 239965c08bcf..a9e12169606d 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index f312fa5e8425..b4c63736a993 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 435cf200e305..6fbf92959338 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 41de1b04237a..fa747f41d6bb 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 21bae9a711ca..dd1896fbc914 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 2fbe186ef2b6..ec75a677890d 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index ea4dc080a9b4..6552e7d8332e 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 1f52a0ac42d4..9f3cbe51ab36 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index cca62931a24a..2acccfba66d5 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 15e5e255d302..e03a882683f5 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 483ea01af5ab..a68b58911f47 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index a128a744a6e1..84e83f99293a 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index ace4af124643..33250313453e 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 4d0be06f42fd..1f6d92370678 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 28666e0303e8..4b5161339c5d 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 7ddcb2af1e81..076c0a741c2c 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index bc0254c46691..adf62ed30b7d 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 32e08f28c17f..239accb326a1 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 8945fb2f27cb..ab7f7eface27 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index a46633926ba7..56fef880527f 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 1db388d7546d..069eaacefe66 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 7bacd976f29a..fa54d9c3c7db 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index f014ae790965..314b001b295f 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index f82f323a84ed..85e68b5b44d5 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index cdee2421f60d..8b79b243ca28 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index a4f29600246f..8866b3c440c3 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 1d3b40fefcd5..a6cdb2ed4849 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 4bab09321b81..3761278b36d4 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 58a4a2053ba0..14e47976e43e 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 634314455197..eb923372a2ab 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index bbb37aa050ee..8aee24ff08ee 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index a797fbd3f08c..ddbbe80753d1 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index d9f0a3315dff..2048b55f9dce 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 0f723e2bc7d7..23d07bf99d64 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 258a5463871c..f21108413e62 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 7d9ed9be1bd9..5c456d137971 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 904141b4df5b..5ecfe6bd3f06 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index fffcdc7f967b..f63b0fe8d257 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 0fe398917490..e99fa9b3918e 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 0f61ee3df70f..be433d3a4178 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 836afefa7a92..c5c11a948ba6 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 26d3cab02f62..330f4cc9f7bf 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 3b99f31c9570..e85745c857f2 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 1c3e6aa511e3..e8d8bee9486e 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index ba7e3b3d1215..48264781306e 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 148bc76020c6..b83962208d73 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 79919f312cb2..7ad3003df44f 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 06517e05e608..3146daf3619a 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 80e64bb61fd5..e086110548e6 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index f25b4c133f14..694249f69d6a 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 458a5d5d3acb..0967258af6a7 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index d71adac2e400..a36c64ddf3b5 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index e05a8ff70fe5..92949aa61007 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 42ebd77c4a58..2c4d3149a5a5 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 6b1469a0cda8..58d55f4a999d 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index c235e87528dc..38a9f271787c 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index d65aa8ec8a40..d4bd17721b13 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index e44f400f03f3..5c2595f613dd 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index e3b241a9a2d7..6626e2dee8a0 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 7a5f585128b6..a069973f2315 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 7f2bec2bab54..88ee9b3199ca 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 146670db9d8b..e5d0514c8edf 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 92a1ae71f578..434f811f6ad7 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 32e9c1b04a25..8b88a8edb043 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index b877b90ccdb8..9a8a21c69409 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 4c436142aab1..7d49cfdcaa56 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 445cc6da99f4..500f0f5b3f8b 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 619905d0a950..201561737f0f 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index d58e6371598c..946012c14099 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 3421432cf783..de7feff74d95 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index d9f06f1cdfea..c9effa018d8a 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index e0914247ae34..6137cc1bbb42 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index f9d27b22ebc3..1b97657cb65e 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index c0957c451eb1..76901fb2ec8b 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 73d05600568a..51c0683726f3 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 835717bda004..07bfb3ff46a4 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 15742ff065a5..5b9b9bd16da3 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 964199b21671..0969a40c9391 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 727413e5bfcd..bcbe03a65c13 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 31ef0a3806e1..487204ac5a0c 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 4ea037f7b55e..0f4cdeab5e8e 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 7d9cf4e66733..9a432235a057 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index b0b2f86bb838..28ece7101001 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 2b35be15644e..76cfb8d3148c 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index aed70295a28c..5926b286f928 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 9295f164dcdb..3b0916e49b0f 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 9833f36cb40e..c7532dbd6089 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index ea0997b26286..e33c00a4b96f 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 718ad998f6e4..19c0dcea5253 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 96dd2e3ee301..1a353282aa29 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 7c65297945b4..b406ac8e9a77 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index a50d8fb8ca8d..7dc23a16196f 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 468c1fa71603..591cc04c2ff7 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 2c55b31f241b..8ac00ec48066 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] --- import kbnCoreInjectedMetadataBrowserObj from './kbn_core_injected_metadata_browser.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index ee0cff22c741..26ef1964081d 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 3dc00cb5c5db..0d22019de786 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 9cb07d914fe0..34563e673e02 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index f4687d1fec8a..bfa399437063 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index ae6493c07330..6595eab8b238 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index bd0d1a348046..1f11a49794a1 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index fa926802350b..a64e8c8c6616 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 9784693f4d47..efb56eb2fc6c 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index a5fcd4d870a0..2e6152469e3e 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index ce67b0dfaf26..e3e7c6ba8ba4 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index b6f58bf2ced4..270a4a46e7a5 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index e82e1f4498f1..eb703aaa3407 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser_internal.mdx b/api_docs/kbn_core_mount_utils_browser_internal.mdx index e8462d8f0014..569160e42212 100644 --- a/api_docs/kbn_core_mount_utils_browser_internal.mdx +++ b/api_docs/kbn_core_mount_utils_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser-internal title: "@kbn/core-mount-utils-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser-internal'] --- import kbnCoreMountUtilsBrowserInternalObj from './kbn_core_mount_utils_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 414ce344c716..12598e5d6fa0 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 8d81051d6960..5caabbb68120 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 0bb2ca50772a..22ad8aaa7058 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 4f65d9175a46..4cce152b8c34 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index a59ce643728b..27e83e21b9ca 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index c20eb24696e5..1b767adf4779 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index b3511ec556dd..8e8edbe505a5 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 294cf26e1b86..ef464d5351cf 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 55b560524b76..20bc05ec5bd1 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 6d106759078b..7192c0064eb9 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 4e353b49e5bb..fe5c14d7182a 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 765cb26d09e3..52a027a83752 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 2c0aa94780e7..5d357c3bcae6 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_internal.mdx b/api_docs/kbn_core_saved_objects_api_server_internal.mdx index 54829b9a056b..ec7fb04e0e5c 100644 --- a/api_docs/kbn_core_saved_objects_api_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-internal title: "@kbn/core-saved-objects-api-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-internal'] --- import kbnCoreSavedObjectsApiServerInternalObj from './kbn_core_saved_objects_api_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 63a0c2655c38..892a5c8ca39e 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 5e4f781e7b51..6371fd955e9f 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 7bed592b87a4..aa057ad41508 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 5dab80c8c69b..5a12ee4036c3 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 16e6589c44a9..8082d0d635db 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index afb8bc5a7cbe..770db3077315 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 6319d806951f..64c27658193d 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 1c8c50859735..0cc1c262adc8 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index e8f8066e176e..71c436adc99f 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index f2bd4c2e8b05..4f8e36d1c34c 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index c55be72ce58a..95043667db9c 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 066bbed46a9d..0af74f2df0e8 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 9c6b877ab9fb..a22ba1af7fbf 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index cfc3b8f8338f..940449db5857 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index c05daeab136c..61a4cc8cfed1 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index c584a9d2055f..eab2a758bb75 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index fde013078848..02392ea080de 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 58880aa26002..13cf25736f0a 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 4e4bc60d5402..87b94a7423f5 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 8afef7df1f68..0bae95c54bab 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 7659aae174a8..cfd2a69b2e31 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 8c3ef5acaf64..760ee8537de9 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 1d436b412d00..85c74fe7d3b1 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index cf22fa8aa077..055834859cf5 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 5ebccd59804a..06996ea56062 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 6192cdbd44d9..f01b93d78d2e 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 9e8221aff2c0..0d079c9c8280 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 10be0b1b374b..279cdb53f6fc 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index a98cffae2f94..d319dac7927e 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 4994aaefb664..468a419d7232 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 36f224e56451..4101f4d17264 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index ed5f66acc054..747febc62827 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 3951aec52936..0e3f965d2b78 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 36bce1ef5d29..4181739a3dfa 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index accec4aa51fb..4a2268285f02 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 7ca5a9f9164e..c8a5cfd9449b 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 6a9c594fe868..7550e6889178 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 88bc6c3b36c5..bba0e7118cf8 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index f208967eefe4..145d7da42a5c 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 5a5aa3e72e13..7e4ce317a213 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 06166239e5c6..e22cebaec90e 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 4a00b8cddd1b..6a7c2fe43c34 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_get_repo_files.mdx b/api_docs/kbn_get_repo_files.mdx index 4c7a58232210..5679b5e282e3 100644 --- a/api_docs/kbn_get_repo_files.mdx +++ b/api_docs/kbn_get_repo_files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-get-repo-files title: "@kbn/get-repo-files" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/get-repo-files plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 0a72e46fcdb8..04153b53edc2 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index a808d333c13e..3c174efd57e9 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index edccba9e3ec5..f29a21a89ff8 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index aa3bc377567c..55b0897b6cb7 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index b3c64dd391f2..21727501bb4a 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 90ff52dda5e1..283b9a503f83 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 4bf4e31ab039..f588128d524f 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 4c556bfd9c67..fa531662aae2 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index b32cc18990bb..8bdb53d7d0ea 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_parser.mdx b/api_docs/kbn_kibana_manifest_parser.mdx index 1dce03a2d7b3..f1d541932836 100644 --- a/api_docs/kbn_kibana_manifest_parser.mdx +++ b/api_docs/kbn_kibana_manifest_parser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-parser title: "@kbn/kibana-manifest-parser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-parser plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-parser'] --- import kbnKibanaManifestParserObj from './kbn_kibana_manifest_parser.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index c8235177844d..c81218633432 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index e75c8dba697a..4a5f348cd59a 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 6fca2944bbe8..4192e109f611 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index c4cbe28f5912..c7a618189f93 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 9c814810a344..746a92e00c93 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index a9c0155d8ded..8d8224d2b6ed 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 02977946f802..530c62f440f0 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 36b607c6c4e5..61e0ef906df1 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 3b9e7d90974b..f031f5c271b6 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index f83831293c88..8a1f87e52294 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 8874b0cb4848..ba762fa11c8e 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 6afad36e477c..c1becc7cf1f6 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index f67e97e76745..d55d27361910 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 212ecc224344..386f6b697003 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 49991d95446a..512cf2bd4759 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 4a3065f9927d..2d4969692949 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 948502668eaf..76b666979ec8 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 34a237edf044..8a297b1b7d14 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index fdd14855fee2..f83a2c77baf7 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 0402e34d996e..16eea583ebfe 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 7fff2c2d0b6a..d586883de7d2 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 52c6ce0c1ce9..c36b95171cf2 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 63409d60558d..289fbf22f1db 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 318252303ae3..76eaca86a6d0 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 6c381ede88de..0eef33f382c2 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 47b2a2d05dc1..e13e357a5e9f 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index ac576ad77723..3f8eb397094d 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index b72e1ac924cd..1f31bac72f96 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index fd815aa06c64..881a27294258 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 2f875ae5344c..7954a4e85bf1 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 2f213bb4b6cc..7542e4246c4c 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index a89bb87cfb7f..af16242a5a39 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index cb3727c77174..083fc4c5286e 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index f9a3dd0bd0b9..c5549f65352b 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index d813bffe2de9..d7036dd77d59 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 29d5088d807c..3ffb08f9d6e2 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 65d12bc90f10..a206edd0ee99 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 9453b4758dc2..b13c14c943f5 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 8e2a750b83a1..e9973a30f20d 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index a35aa395217b..5258e47ed871 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index bbaec10d9eb1..99f9e6d772bd 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 950133a39b6c..72b62e1e7b0f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index b0a4124dab21..2adf54a17575 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 47654f40a151..e58f7ba0e493 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 6a99fd5c4d40..64c8307299cc 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 631190f27809..399b2a1c9335 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index e4d0e792cb46..0b125223cdfd 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 82f41c508775..6f7687acf210 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 0dd6569da4fa..cea1596ae92d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index e2f2961eb707..2cd84e782a27 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index f9498e115d6a..640ede0fb674 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 3c18b76c8ec7..222d1502ecd3 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index c9dde900333d..f064ac504e78 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 677ea3098b52..333d7460b36a 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 5b90bfa9fa91..b9ffeb1b38d3 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 186d46599c34..b9f51fbdb6b9 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-package-json plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] --- import kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 04e1955060de..bb038afb949b 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 3e7247084e0c..b3f14996b80d 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 97c02b00b17a..daa61cfff03d 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 07c0e478d483..d337179b5411 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index e720774bff68..d08d15ad1aeb 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 69ac49832d07..198cdd81acb2 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 5683072ede84..c8df5f270aeb 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index 914fe0154fc5..044f7f9f4702 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] --- import kbnTypeSummarizerObj from './kbn_type_summarizer.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index 34718d25009a..2dc0f6007a9c 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/type-summarizer-core plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] --- import kbnTypeSummarizerCoreObj from './kbn_type_summarizer_core.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 54ce9860350e..23dbe507e540 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 3d143b60a21c..96daf6912bfa 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 1e44c9b90239..2a3dac2809ef 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index fc102a1a4062..ae5d44669de4 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index f3eaa488698e..a9284cb480c1 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 58a26939d34f..d842450342dd 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 2f2fefb42c81..de99efd7a21b 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index ed86b7e42384..61c6015dee36 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 813f1d91a507..3fdc9a1bebfe 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 0a19523849fc..b7ba37b95781 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index b379130ec78f..43ac93babd4f 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index b918965a56a8..c886a45c5971 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index b58095b0c107..9c759dc478bf 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 9152e662cbef..19f3ff980af4 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 925188c3553c..62af91a4c814 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 9de5087ae5de..73d4b7d0a86e 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 8f2d13396da7..884cc1432f37 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index bdc95cef8166..d9c64c12b64b 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 5573221a142a..d4ccc555d519 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 7e90a7089fad..529384f9fac1 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 122c1bf8c65f..965d1f04ec2a 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 03aaa9a5e203..ec864fc0c197 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index ee3d1bfe817e..701c5e9855ab 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index f332463e571e..4c924691bbcf 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index dfc68a8890f7..b6c4dedc8c8c 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index dd4c1961ee4d..3210e697116a 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 91e69849b8f5..af0b6238ded1 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 1f3d995a024d..c4ce394b54ef 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 73e605562652..768955e6a00f 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 1e5be9258b7c..4d997c243467 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 111608b3dedb..edf983dc1f0a 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 43f6dc599e47..7437b081f44c 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index a7a349cc245e..ce67f515f56b 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index b9756c44e4bf..e82d53560802 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 7be26688c0b1..63ac4131a736 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 792a8f590c1e..9d8a86b2359a 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index e42305861897..85d4d80274be 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 112ad4155d3b..d965dd395ba9 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 677c2d9d14de..aedbcbd7dbdc 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 0a991c870c1a..9ee296b767e1 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index e0357f83152b..6e6fb581584f 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 31be3ca07049..ed7e7dca215a 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 647cdc5915ba..af051cbf7327 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index c61b3e58f21a..1be7092ea05c 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index fc4c5bc29c84..82044945f2c8 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index b56fef6619f7..c9a4e7a778de 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 4898d7e9022b..89a6e73be9fd 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 338329ed7f15..c1b1d739a58d 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 12107f7a23a9..ac8f9a53b185 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index ee544b349e7d..402ed6d01b5f 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 7b656903bc7d..dd25cdf796dc 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index aae1f7cc3a7a..3689e74b019f 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index fc13a37d12e4..628a8e007612 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index e607f124e0b3..0955b7f7710a 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 27c8f2899e55..f5f96b9ee327 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 57b7c6aaf9e1..b0f3a9e3248a 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 601ee2ff820a..a372909bc4b4 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index a17d5e204d76..a5e97a5776c7 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index 8c4436636f21..7d22f98b98d8 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 0caf74bb51e1..fabcb640fdd8 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 7e913c0bb8be..76ef2253de39 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 86bd568107e5..9512ef63636e 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 6d913e8d7466..a40d7fb7b24e 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 24e628eb8bdc..079130142992 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 90583e638eee..23d65a5cf3ac 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index a03c5e47c756..27173604330a 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index f85c9a3e9604..8c696ae5b051 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 290aa5c63bfe..f65ab5df958d 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 7d961620e17c..c19c138a13b3 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 2415c3a4c283..c67dae5bb8fa 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 715ff9d4525b..c4b47d4bb256 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index e71f72acf223..44b2f2a59bb6 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 830c85f40c35..a541e9eaf89d 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index a737dfddab4b..740a619eeb92 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 836107691ee7..5b315f99b458 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2022-08-28 +date: 2022-08-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 93e157d99247cff60463047f95ba2a857189702a Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Mon, 29 Aug 2022 08:47:16 +0200 Subject: [PATCH 50/50] [ML] Docs screenshots - log out after suite is done (#139562) This PR adds a logout after the ML docs screenshot creation suite. --- x-pack/test/screenshot_creation/apps/ml_docs/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/test/screenshot_creation/apps/ml_docs/index.ts b/x-pack/test/screenshot_creation/apps/ml_docs/index.ts index 82460db174ad..1c12efc89caf 100644 --- a/x-pack/test/screenshot_creation/apps/ml_docs/index.ts +++ b/x-pack/test/screenshot_creation/apps/ml_docs/index.ts @@ -11,9 +11,10 @@ export const ECOMMERCE_INDEX_PATTERN = 'kibana_sample_data_ecommerce'; export const FLIGHTS_INDEX_PATTERN = 'kibana_sample_data_flights'; export const LOGS_INDEX_PATTERN = 'kibana_sample_data_logs'; -export default function ({ getService, loadTestFile }: FtrProviderContext) { +export default function ({ getPageObject, getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); const ml = getService('ml'); + const securityPage = getPageObject('security'); describe('machine learning docs', function () { this.tags(['ml']); @@ -25,6 +26,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { }); after(async () => { + await securityPage.forceLogout(); await ml.testResources.removeAllKibanaSampleData(); await ml.testResources.resetKibanaTimeZone(); });

r<4M*sh*D1pN z=3tM7X0MGS-d{&|t;+2cu$=WY?|o?8?>-R0*x<$?_Qi5>MCjO3lF0M9Rv0O={q&X3 zI_Trj^DRB=0b67mO?P9ti0Q2Ye$!@ygT*m!!Z)3&{HyC21O4i(%Ey$=6Fs$}o`QcX zf>T9K-5A=X)7C0wZaf`QJ+1DYPb;(;*2p)e3BDHpHTvgkpe-AY!*0JKx37!JVrKby zJ*|;OqWjm+wbAcvm3FsndCk=e+4wa+k;>V4(vrI6^wXi*PQI~I?dr~k3*y)}`kxV6UJB)Ui6-dEd38I7@RBhX{ z_Wr)∓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 S&lD{JK6bnI@65L$UivS?7f(z8 diff --git a/docs/user/alerting/images/snooze-panel.png b/docs/user/alerting/images/snooze-panel.png index b09a509c57ca9e4c39d2a13a1b754013da96528b..fedd86191fd3bfad7d48c1a4c7b5aa2a2a833180 100644 GIT binary patch literal 123538 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